সমস্যাটি হ'ল, আপনার টেমপ্লেটে বেশ কয়েকটি এইচটিএমএল উপাদান থাকতে পারে, সুতরাং এমভিসি বুঝতে পারে না কোনটি আপনার আকার / শ্রেণি প্রয়োগ করবে। আপনাকে এটি নিজেরাই সংজ্ঞায়িত করতে হবে।
টেক্সটবক্সভিউমোডেল নামে পরিচিত আপনার নিজস্ব শ্রেণি থেকে আপনার টেম্পলেটটি তৈরি করুন:
public class TextBoxViewModel
{
public string Value { get; set; }
IDictionary<string, object> moreAttributes;
public TextBoxViewModel(string value, IDictionary<string, object> moreAttributes)
{
// set class properties here
}
public string GetAttributesString()
{
return string.Join(" ", moreAttributes.Select(x => x.Key + "='" + x.Value + "'").ToArray()); // don't forget to encode
}
}
টেমপ্লেটে আপনি এটি করতে পারেন:
<input value="<%= Model.Value %>" <%= Model.GetAttributesString() %> />
আপনার দৃষ্টিতে আপনি:
<%= Html.EditorFor(x => x.StringValue) %>
or
<%= Html.EditorFor(x => new TextBoxViewModel(x.StringValue, new IDictionary<string, object> { {'class', 'myclass'}, {'size', 15}}) %>
প্রথম ফর্মটি স্ট্রিংয়ের জন্য ডিফল্ট টেম্পলেট সরবরাহ করে। দ্বিতীয় ফর্মটি কাস্টম টেম্পলেট রেন্ডার করবে।
বিকল্প সিনট্যাক্স অনর্গল ইন্টারফেস ব্যবহার:
public class TextBoxViewModel
{
public string Value { get; set; }
IDictionary<string, object> moreAttributes;
public TextBoxViewModel(string value, IDictionary<string, object> moreAttributes)
{
// set class properties here
moreAttributes = new Dictionary<string, object>();
}
public TextBoxViewModel Attr(string name, object value)
{
moreAttributes[name] = value;
return this;
}
}
// and in the view
<%= Html.EditorFor(x => new TextBoxViewModel(x.StringValue).Attr("class", "myclass").Attr("size", 15) %>
লক্ষ্য করুন যে ভিউতে এটি করার পরিবর্তে আপনি এটি নিয়ামক হিসাবেও করতে পারেন বা ভিউমোডেলে আরও ভাল:
public ActionResult Action()
{
// now you can Html.EditorFor(x => x.StringValue) and it will pick attributes
return View(new { StringValue = new TextBoxViewModel(x.StringValue).Attr("class", "myclass").Attr("size", 15) });
}
এছাড়াও লক্ষ্য করুন যে আপনি বেস টেম্পলেটভিউমোডেল বর্গ তৈরি করতে পারেন - আপনার সমস্ত দর্শন টেমপ্লেটগুলির জন্য একটি সাধারণ ভিত্তি - এতে বৈশিষ্ট্যগুলি / ইত্যাদির জন্য প্রাথমিক সমর্থন থাকবে contain
তবে সাধারণভাবে আমি মনে করি এমভিসি ভি 2 এর আরও ভাল সমাধান দরকার। এটি এখনও বিটা - এর জন্য জিজ্ঞাসা করুন ;-)