এএসপি.নেট এমভিসি 3 - @ এইচটিএমএল.এডিটরের জন্য টেক্সারিয়া


209

আমার কাছে এএসপি.এনইটি এমভিসি 3 অ্যাপ রয়েছে এবং আমি অ্যাড নিউজের জন্যও ফর্ম করেছি। যখন ভিএস 2010 যখন ডিফল্ট ভিউ তৈরি করে তখন আমার কাছে স্ট্রিং ডেটার জন্য কেবল পাঠ্য ইনপুট থাকে তবে আমি নিউজ পাঠ্যের জন্য টেক্সারিয়া রাখতে চাই। আমি রেজার সিনট্যাক্স দিয়ে এটি কীভাবে করতে পারি।

পাঠ্য ইনপুটটি দেখতে দেখতে:

@Html.EditorFor(model => model.Text)

সম্পর্কিত, কীভাবে সেই সম্পাদকটিম্পলেটটি কাস্টমাইজ করতে হয় সে সম্পর্কে অন্য প্রশ্নের এই উত্তরটি দেখুন ।
জেরোইন

উত্তর:


375

আপনি [DataType]আপনার ভিউ মডেলটিতে এই জাতীয় বৈশিষ্ট্যটি ব্যবহার করতে পারেন :

public class MyViewModel
{
    [DataType(DataType.MultilineText)]
    public string Text { get; set; }
}

এবং তারপরে আপনার একটি নিয়ামক থাকতে পারে:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel());
    }
}

এবং একটি দৃশ্য যা আপনার যা চায় তা করে:

@model AppName.Models.MyViewModel
@using (Html.BeginForm())
{
    @Html.EditorFor(x => x.Text)
    <input type="submit" value="OK" />
}

7
আমি যা সন্ধান করছিলাম তা খুব সুন্দর, তবে যদি সারি এবং কলস এইচটিএমএল বৈশিষ্ট্যগুলি নির্দিষ্ট করার দরকার হয় তবে আমি কী করব?
জেসন

3
আমি এখনও :( সোর্স কোড এ [বর্গ = "টেক্সট বক্স একক লাইন"] পাচ্ছি
Stavros

7
চূড়ান্ত জ্ঞানী এবং এখনও এটিকে যতটা সরল রাখা যায় ততই ধাপে ধাপে সবকিছু ব্যাখ্যা করে। শিল @ দারিন দিমিত্রভ
এসমেট আলকান

@ জেসন স্টাইলিংয়ের জন্য সিএসএস ব্যবহার করুন।
জো স্মু

DataAnnotationsFTW! ধন্যবাদ.
কন

136

কেউ গুণাবলী যুক্ত করার বিষয়ে জিজ্ঞাসা করেছিলেন (বিশেষত, 'সারি' এবং 'কলস')। আপনি যদি রেজার ব্যবহার করছেন তবে আপনি কেবল এটি করতে পারেন:

@Html.TextAreaFor(model => model.Text, new { cols = 35, @rows = 3 })

সেটা আমার জন্য কাজ করে. '@' কীওয়ার্ডগুলি এড়াতে ব্যবহৃত হয় যাতে তাদের ভেরিয়েবল / বৈশিষ্ট্য হিসাবে বিবেচনা করা হয়।


প্রকৃতপক্ষে - যদি আপনি জানেন যে আপনার কলস / সারিগুলির সাথে কোনও পাঠ্য অঞ্চল চান, তবে TextAreafor পরিবর্তে EditorFor ব্যবহার করার খুব কম কারণ আছে। যে কারও কারও কারও যদি আপনার এখনও সম্পাদকআরটি ব্যবহার করার প্রয়োজন আছে এবং জানেন যে আপনার কলস / সারি নির্দিষ্ট করা দরকার?
জেমস হগ

95
@Html.TextAreaFor(model => model.Text)

6
আমি এই পদ্ধতিটি আরও ভাল পছন্দ করি কারণ এখানে জনপ্রিয় উত্তরের সাথে ডাটাবেস মডেলটি সংশোধন করা জড়িত, যার অর্থ আপনাকে এন্টিফ্রেমওয়ার্ক ব্যবহার করে যদি অন্তর্নিহিত ডাটাবেসটি ড্রপ এবং পুনরায় তৈরি করতে হয়।
Ciaran গ্যালাগার

6
যে ডেটা টাইপ টিকা টিকা সারণী ফ্রেমওয়ার্ক একটি রিফ্রেশ জোর করে না।
টালমারিস

9
@ সিয়ারান: এই বিবৃতিতে একটি ঘণ্টা বাজানো উচিত। ইউআই পরিবর্তন করার জন্য ডাটাবেস স্তরটি পরিবর্তন করার কোনও দরকার নেই। একটি উপস্থাপনা অবজেক্ট থাকতে হবে, যা ডাটাবেস অবজেক্টের ম্যাপার। আপনার ইউআই তে কখনই ডাটাবেস অবজেক্ট ব্যবহার করবেন না।
ফ্রেডেরিক প্রজাক

5
স্পষ্টরূপে, ফ্রেডেরিক যা উল্লেখ করছেন তা হ'ল এমন ক্লাস তৈরি করছে যা আপনার ডিবি কোডটেক্সটে ব্যবহৃত ক্লাসগুলি থেকে আলাদা করে আপনার ভিউ ডেটা উপস্থাপন করে। আপনার DbContext মডেলগুলি ভিউগুলিতে পাস করবেন না। একটি ভিউ মডেল বর্গ তৈরি করুন, তারপরে আপনার ডিবি মডেল থেকে যত্ন নেওয়ার তথ্যটি ভিউ মডেলে স্থানান্তর করুন, এবং ইনপুটগুলি গ্রহণ করার সময় তার বিপরীতে।
জিম ইয়ারব্রো

3
@ ফ্রেডেরিকপ্রিজ্যাক আমি একমত নই, তবে এটি ডিআরওয়াই অধ্যক্ষকে লঙ্ঘন করে না? আপনাকে সমস্ত সম্পত্তি এক শ্রেণি থেকে অন্য শ্রেণিতে অনুলিপি করতে হবে। এটি করার কি কম "জাগতিক" আছে, যা আপনি খুঁজে পেয়েছেন?
জেমস হগ

1

আপনার মডেল এর সাথে ঘোষণা করুন

  [DataType(DataType.MultilineText)]
  public string urString { get; set; }

তারপরে .cshtml এ নীচের মত সম্পাদক ব্যবহার করতে পারেন। আপনি ব্যবহার করতে পারেন @cols এবং @rows পাঠ্য এলাকা আকার জন্য

     @Html.EditorFor(model => model.urString, new { htmlAttributes = new { @class = "",@cols = 35, @rows = 3 } })

ধন্যবাদ!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.