এডিটরফোর্ড () এবং এইচটিএমএল বৈশিষ্ট্য


113

Asp.Net MVC 2.0 পূর্বরূপ বিল্ডগুলি সাহায্যকারীদের সরবরাহ করে

Html.EditorFor(c => c.propertyname)

যদি সম্পত্তিটির নাম স্ট্রিং হয় তবে উপরের কোডটি একটি টেক্সবক্স সরবরাহ করে।

যদি আমি ম্যাক্সেলেন্থ এবং সাইজ বৈশিষ্ট্যগুলিতে পাঠ্য বাক্সে বা আমার নিজের সিএসএস শ্রেণীর সম্পত্তিতে পাস করতে চাই তবে কী হবে?

আমার অ্যাপ্লিকেশনটিতে প্রতিটি আকার এবং দৈর্ঘ্যের সংমিশ্রণের জন্য আমার কি একটি টেম্পলেট তৈরি করা দরকার? যদি তা হয়, এটি ডিফল্ট টেম্পলেটগুলি ব্যবহারযোগ্য করে তোলে না।

উত্তর:


92

এমভিসি 3 এ, আপনি নীচে প্রস্থ সেট করতে পারেন:

@Html.TextBoxFor(c => c.PropertyName, new { style = "width: 500px;" })

62
@vondip। নিশ্চিত করুন এটির পাঠ্যবক্স এবং কোনও সম্পাদক নয়। সম্পাদকের সাথে কাজ করবেন না।
ক্যাস্পার স্কভ

1
এটি টেক্সারিয়াসের সাথেও কাজ করে: @ এইচটিএমএল। পাঠ্যআরিয়াফোর্স (সি => সি। প্রপার্টিনেম, নতুন {স্টাইল = "প্রস্থ: 500px;"})
টারজান

নোট করুন যে কিছু ডেটা টীকাগুলি টেক্সটবক্সফোর্ড দ্বারা সমর্থিত নয় যা এডিটরফো'র সাথে কাজ করবে যেমন ফর্ম্যাটস্ট্রিং
অ্যারোনলএস

14
এই উত্তরটি, পুরোপুরি প্রশ্নটি যা এডিটরফোর্ড-টেম্পলেট কার্যকারিতা সম্পর্কিত তা উপেক্ষা করে না?
ফিলিপ এম

1
টেক্সটবক্সফোর্ড ব্যবহার করে তথ্যের টীকাগুলি হিসাবে সেট করা প্রদর্শন ফর্ম্যাটগুলি বন্ধ করে দেয়
Anders Lindén

61

আমি আমার / ভিউ / শেয়ার্ড / এডিটর টেম্পলেটস ফোল্ডারে স্ট্রিং.অ্যাসেক্স নামে একটি এডিটর টেম্পলেট তৈরি করে এটি সমাধান করেছি:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<% int size = 10;
   int maxLength = 100;
   if (ViewData["size"] != null)
   {
       size = (int)ViewData["size"];
   }
   if (ViewData["maxLength"] != null)
   {
       maxLength = (int)ViewData["maxLength"];
   }
%>
<%= Html.TextBox("", Model, new { Size=size, MaxLength=maxLength }) %>

আমার দৃষ্টিতে, আমি ব্যবহার করি

<%= Html.EditorFor(model => model.SomeStringToBeEdited, new { size = 15, maxLength = 10 }) %>

আমার জন্য একটি কবজ ভালো কাজ করে!


1
উজ্জ্বল - আমার একটি ডেটপিকারের ডেটটাইম ড্রপ ডাউন ছিল যা আমি ইতিমধ্যে টেম্পলেট করেছি, তবে এর সাথে অতিরিক্ত গুণাবলী বজায় রাখা বেদনাদায়ক প্রমাণিত হয়েছিল - এটি আমার জন্য সমাধান করেছে, ধন্যবাদ!
টেরি_ব্রাউন

সর্বোচ্চ দৈর্ঘ্যের সাথে সম্পাদকফর আমার পক্ষে কাজ করে না (অন্যদিকে টেক্সটবক্সফর)
Drejc

@ টিজিরধনস, আমি আমার সিএসএস কাস্টমাইজ করতে এই কোডটি ব্যবহার করেছি। এটি কাজ করে তবে দুর্ভাগ্যক্রমে এটি মূল CSS মানগুলিকে প্রতিস্থাপন করে। এর পরিবর্তে আমি কীভাবে এটি মূল সিএসএসে যুক্ত করতে পারি ?
রোসদী কাসিম

33

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

স্টাইলিং একটি @ এইচটিএমএল.এডিটরের জন্য সহায়ক

আমি একই পদ্ধতির ব্যবহার করেছি এবং এটি অনেকগুলি অতিরিক্ত কোড না লিখে সুন্দরভাবে কাজ করেছে। নোট করুন যে এইচটিএমএল.এডিটরফোরের এইচটিএমএল আউটপুটটির আইডি বৈশিষ্ট্যটি সেট করা আছে। ভিউ কোড

<style type="text/css">
#dob
{
   width:6em;
}
</style>

@using (Html.BeginForm())
{
   Enter date: 
   @Html.EditorFor(m => m.DateOfBirth, null, "dob", null)
}

"ডডি এমএমএম ইয়াই" হিসাবে ডেটা টীকা এবং তারিখের ফর্ম্যাটিং সহ মডেল সম্পত্তি

[Required(ErrorMessage= "Date of birth is required")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd MMM yyyy}")]
public DateTime DateOfBirth { get; set; }

অতিরিক্ত প্রচুর কোড না লিখে কবজির মতো কাজ করেছেন। এই উত্তরটিতে ASP.NET MVC 3 রেজার সি ব্যবহার করা হয়েছে।


1
এমভিসি 4 তেও আমার জন্য খুব ভাল কাজ করেছে।
এটকনওয়ে

1
ফর্ম্যাটিংটি কাজ করেছে তবে বাক্সটি কার্যকরভাবে অক্ষম করার জন্য ডেটা বাতিল করার জন্য ফিরিয়ে দেওয়া হয়েছে।
জো

2
এমভিসি লোকদের সাথে এটি কী তা আমি জানি না, এটির মতো প্রত্যেকের কাছেই এমন কোনও ওয়েবসাইট লেখা নেই যা সংখ্যার জন্য একাধিক ভাষা এবং ফর্ম্যাট নিয়ে কাজ করে।
অ্যাডুডলি

খুব ভালো. এটি সহজ, এটি কাজ করে, এবং এটি বিকল্প সরবরাহ না করে আসলে ওপি-র প্রশ্নের উত্তর দেয়। এমভিসি 4 ব্যবহার করে।
draconis

সতর্কতা: ডেটটাইমগুলি টাইপ = "ডেটটাইম" হিসাবে রেন্ডার হিসাবে উপস্থিত হয়, যা জন্ম তারিখের জন্য ভুল, এবং কিছু ব্রাউজার (ইন ফায়ারফক্স মোবাইলের মতো) প্রকৃতপক্ষে সঠিকভাবে সেই ইনপুট প্রকারকে সমর্থন করে, এমন কোনও সময় উপাদান যা সম্ভবত বৈধতা দেয় না এবং কঠিন বা ব্যবহারকারীর পক্ষে অপসারণ অসম্ভব।
ব্রায়ানারি

25

থাকতে পারে তাকান করতে কিরণ চাঁদ এর ব্লগ পোস্ট , তিনি যেমন দৃশ্য মডেল কাস্টম মেটাডাটা ব্যবহার করে:

[HtmlProperties(Size = 5, MaxLength = 10)]
public string Title { get; set; }

এটি কাস্টম টেম্পলেটগুলির সাথে মিলিত হয়েছে যা মেটাডেটা ব্যবহার করে। আমার মতে একটি পরিষ্কার এবং সহজ পদ্ধতির তবে আমি এই সাধারণ ব্যবহারের কেসটি এমভিসি-তে অন্তর্নির্মিত দেখতে চাই।


71
তুমি কি মজা করছ? এ জাতীয় কোনও সাধারণ কাজের জন্য এটি অত্যধিক ওভারকিল। আরও এবং আরও আমি খাঁটি এইচটিএমএল এ ফিরে যাচ্ছি এবং এমভিসি ব্লাটেড সহায়ক সহায়তা পদ্ধতি ভুলে যাচ্ছি। 5 মিনিট আগে আমার কাছে একটি সাধারণ টেক্সটবক্স ছিল যা সাফল্যের সাথে একটি jquery ডেটপিকারটি চালু করেছিল। এখন কেবলমাত্র আমি এটি পরিবর্তন করতে চেয়েছিলাম যে এটি কীভাবে প্রাক-লোড হওয়া তারিখের মানটিকে ফর্ম্যাট করে, আমাকে এডিটরফোরে পরিবর্তন করতে হয়েছিল। তবে এখন হঠাৎ করে আমি অতিরিক্ত মাত্রায় ফুলে যাওয়া কাস্টম এক্সটেনশন পদ্ধতি এবং সাহায্যকারীদের না লিখে আমার নিজের এইচটিএমএল বৈশিষ্ট্যগুলি আর নির্দিষ্ট করতে পারি না। কি কৌতুক. একটি সহজ উপায় থাকতে হবে, আপনি পাগল অধ্যাপকরা কখন থামবেন তা জানেন না।
অ্যারন

1
আমি মনে করি আপনি প্রসঙ্গটি মেশাচ্ছেন। আপনার দেওয়া লিঙ্কটির সাথে প্রত্যেকের নিজস্ব আকার এবং সর্বোচ্চ দৈর্ঘ্যের মান পাওয়ার সাথে আপনার দুটি পৃথক সম্পাদকফোনের কল কীভাবে থাকতে পারে? আপনি যদি সম্পাদকফোর ব্যবহার করতে না চান তবে আপনি সর্বদা পাঠ্যবক্স সহায়ক বা সহজ এইচটিএমএল ব্যবহার করতে পারেন। তবে সেই প্রশ্নই নয়!
chandmk

অ্যারন সর্বশেষতম এমভিসি হিসাবে, আপনি অতিরিক্ত এইচটিএমএল বৈশিষ্ট্যগুলি EditorForএটি পাস করে নির্দিষ্ট করে দিতে পারেন :new { htmlAttributes: { @class = "yourclass" } }
জোব্রোকহাউস

17

আমি অবাক হয়েছি কেউ "অতিরিক্ত ভিউডাটা" তে পাস করার এবং অন্য দিকে এটি পড়ার কথা উল্লেখ করেনি।

দেখুন (লাইন ব্রেক সহ, স্পষ্টতার জন্য):

<%= Html.EditorFor(c => c.propertyname, new
    {
        htmlAttributes = new
        {
            @class = "myClass"
        }
    }
)%>

সম্পাদক টেম্পলেট:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>

<%= Html.TextBox("", Model, ViewData["htmlAttributes"])) %>

এটির উপর ভিত্তি করে আমি এমন একটি সহায়ক তৈরি করেছি যা গুণাবলীর একত্রিতকরণের বিষয়টি বিবেচনা করে - stackoverflow.com/a/11498094/79842
কলিন বওয়ারন

6

সমস্যাটি হ'ল, আপনার টেমপ্লেটে বেশ কয়েকটি এইচটিএমএল উপাদান থাকতে পারে, সুতরাং এমভিসি বুঝতে পারে না কোনটি আপনার আকার / শ্রেণি প্রয়োগ করবে। আপনাকে এটি নিজেরাই সংজ্ঞায়িত করতে হবে।

টেক্সটবক্সভিউমোডেল নামে পরিচিত আপনার নিজস্ব শ্রেণি থেকে আপনার টেম্পলেটটি তৈরি করুন:

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 এর আরও ভাল সমাধান দরকার। এটি এখনও বিটা - এর জন্য জিজ্ঞাসা করুন ;-)


আমি মনে করি এটি মোকাবিলার আরও ভাল উপায় হ'ল এখানে আমি উল্লেখ করেছি স্ট্যাকওভারফ্লো / সিকিউশনস / ১6464760০৯/২ ... সংক্ষেপে ডাব্লুপিএফ যেভাবে সমস্যাটি পরিচালনা করে তার অনুরূপ কিছু করা ... স্বেচ্ছাসেবী শৈলীর উপাদানসমূহ (এই ক্ষেত্রে বৈশিষ্ট্য) টেম্পলেটটিতে পাস হবে এবং টেমপ্লেটটি সিদ্ধান্ত নিয়েছে যে এটি কোন অভ্যন্তরীণ উপাদানটিতে শৈলীটি প্রয়োগ করবে ...
vdhant

6

আমি মনে করি সিএসএস ব্যবহার করা উপায়। আমি আশা করি এক্সএএমএল এর মতো নেট নেট কোডিং দিয়ে আরও কিছু করতে পারতাম, তবে ব্রাউজারে সিএসএস রাজা।

Site.css

#account-note-input { 
  width:1000px; 
  height:100px; 
} 

.cshtml

<div class="editor-label"> 
  @Html.LabelFor(model => model.Note) 
</div> 
<div class="editor-field"> 
  @Html.EditorFor(model => model.Note, null, "account-note-input", null) 
  @Html.ValidationMessageFor(model => model.Note) 
</div>

জো


EditorForটেমপ্লেটটি ব্যবহার করার সময় নিয়ন্ত্রণ নির্দিষ্ট সিএসএস পরিবর্তন করার জন্য এটি খুব ভাল কাজ করে । আমি এমভিসি 4 ব্যবহার করছি এবং এটি দুর্দান্ত কাজ করেছে।
এটকনওয়ে


3

আপনি আপনার সম্পত্তিগুলির জন্য গুণাবলী নির্ধারণ করতে পারেন can

[StringLength(100)]
public string Body { get; set; }

এটি হিসাবে পরিচিত System.ComponentModel.DataAnnotations। আপনার যদি ValidationAttributeপ্রয়োজনীয়টি না পাওয়া যায় তবে আপনি সর্বদা কাস্টম বৈশিষ্ট্যগুলি সংজ্ঞায়িত করতে পারেন।

শুভেচ্ছা, কার্লোস


3
তিনি এইচটিএমএল-গুণাবলী যেমন মাপের দৈর্ঘ্য যাচাইকরণ নয় সম্পর্কে কথা বলেন।
ম্যাথিয়াস এফ

আমি আশা করি ভিউ ইঞ্জিনটি ডেটা অ্যানোটেশনগুলিও মানবে। আমি এখনও এমভিসি 2 এর সাথে গোলমাল করি না।
mxmissile

আমি স্ট্রিংলংথ ডেটা টীকাটি চেষ্টা করেছিলাম। এটি সম্পাদকফোর্ডের সাথে কাজ করে না।
Wayne.blackmon

3

এটি সম্ভবত সবচেয়ে সহজ সমাধান না হলেও এটি সোজা। আপনি এইচটিএমএলহেল্পার.এডিটর ফর ক্লাসে একটি এক্সটেনশন লিখতে পারেন। সেই এক্সটেনশনে আপনি কোনও বিকল্প প্যারামিটার সরবরাহ করতে পারেন যা সহায়কটির জন্য ভিউডাটাতে বিকল্পগুলি লিখবে। এখানে কিছু কোড রয়েছে:

প্রথমত, এক্সটেনশন পদ্ধতি:

public static MvcHtmlString EditorFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, TemplateOptions options)
{
    return helper.EditorFor(expression, options.TemplateName, new
    {
        cssClass = options.CssClass
    });
}

এরপরে, বিকল্পগুলি অবজেক্ট:

public class TemplateOptions
{
    public string TemplateName { get; set; }
    public string CssClass { get; set; }
    // other properties for info you'd like to pass to your templates,
    // and by using an options object, you avoid method overload bloat.
}

এবং পরিশেষে, স্ট্রিং.অ্যাসেক্স টেম্পলেট থেকে লাইনটি এখানে:

<%= Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = ViewData["cssClass"] ?? "" }) %>

সত্যি বলতে গেলে, আমি মনে করি এটি দরিদ্র আত্মাদের কাছে সোজা এবং স্পষ্ট যারা আপনার কোডটি রাস্তায় বজায় রাখতে হবে। এবং আপনি আপনার টেম্পলেটগুলিতে যেতে চান এমন বিভিন্ন বিটের তথ্যের জন্য প্রসারিত করা সহজ। এটি এমন একটি প্রকল্পে আমার পক্ষে এখন পর্যন্ত ভাল কাজ করছে যেখানে আমি আশেপাশের এইচটিএমএলকে মানায়িত করতে টেমপ্লেটের একটি সেটে যতটা পারি তার মোড়ানোর চেষ্টা করছি, একটি লা http://bradwilson.typepad.com/blog/2009/ 10 / aspnet-MVC-2-টেমপ্লেট-অংশ-5-মাস্টার-পৃষ্ঠা-templates.html


3

আমি আমার নিজের প্রশ্নের উত্তর দিতে একটি ব্লগ এন্ট্রি লিখেছি

টেমপ্লেটগুলির জন্য এইচটিএমএল বৈশিষ্ট্য সমর্থন যুক্ত করা হচ্ছে - এএসপি.নেট এমভিসি 2.0 বিটা


(ভিউ) মডেলটিতে এইচটিএমএল ফর্ম্যাটিং বৈশিষ্ট্য রাখার ধারণা এমভিসি-র পৃথক দর্শন এবং যুক্তিযুক্ত ধারণার বিরুদ্ধে! যদি মডেলটির এইচটিএমএলে বিভিন্ন উপস্থাপনের প্রয়োজন হয়?
সায়েন্টেলাম

2
@Saintedlama: এটা পুরোপুরি জরিমানা ডেটা টীকা করা এর viewmodel কারণ viewmodel একমাত্র উদ্দেশ্যে কাঠামোগত তথ্য মডেল প্রদান করা হয়, দৃশ্যমডেলটির সাথে বিভ্রান্ত হওয়ার দরকার নেই , যা এমভিসি পরিভাষায় সাধারণত একটি ডিবি সত্তাকে উপস্থাপন করে, যার কোনও ভিউ-সম্পর্কিত বৈশিষ্ট্য থাকতে হবে না। এটি বলার পরেও, দুর্ভাগ্যজনক যে তাঁর ভিউ মডেল টীকাগুলি এইচটিএমএলএক্সএক্সএক্সএক্স থেকে শুরু হয় কারণ এটি HTML কে উপস্থাপনা স্তর হিসাবে বোঝায়, তবে কোথাও একটি লাইন আঁকতে হবে। :) এছাড়াও, যদি তিনি রূপালীলাইট অ্যাপটি বলার জন্য ভিউ মডেলটি পুনরায় ব্যবহার করেন, তবে তিনি সহজেই তার ভিউ মডেলটিতে এসএল বৈশিষ্ট্যগুলি যুক্ত করতে পারেন।
বরিস বি।

3

আমি জানি না কেন এটি এইচটিএমএল.এডিটরটির জন্য কাজ করে না তবে আমি টেক্সটবক্সফোর্ড চেষ্টা করেছি এবং এটি আমার পক্ষে কাজ করেছে।

@Html.TextBoxFor(m => m.Name, new { Class = "className", Size = "40"})

... এবং বৈধতা কাজ করে।


আপনার প্রয়োজন@class = "className"
জোব্রোকহাউস

2

আমার অনুশীলনে আমি দেখতে পেয়েছি যে এটির মধ্যে কেবলমাত্র একটি এইচটিএমএল হেলপার - টেক্সটবক্স যা বেশিরভাগ ক্ষেত্রে রয়েছে তার সাথে EditorTemplet ব্যবহার করা ভাল। আমি যদি আরও জটিল এইচটিএমএল কাঠামোর জন্য একটি টেম্পলেট চাই, আমি একটি পৃথক এইচটিএমএল সহায়তা লিখব।

দেওয়া হয়েছে যে আমরা টেক্সটবক্সের এইচটিএমএলঅ্যাট্রিবিউটের জায়গায় পুরো ভিউডেটা অবজেক্টটি আটকে রাখতে পারি। এছাড়াও বিশেষভাবে চিকিত্সার প্রয়োজন হলে আমরা ভিউডাটার কয়েকটি বৈশিষ্ট্যের জন্য কিছু কাস্টমাইজেশন কোড লিখতে পারি:

@model DateTime?
@*
    1) applies class datepicker to the input;
    2) applies additionalViewData object to the attributes of the input
    3) applies property "format" to the format of the input date.
*@
@{
    if (ViewData["class"] != null) { ViewData["class"] += " datepicker"; }
    else { ViewData["class"] = " datepicker"; }
    string format = "MM/dd/yyyy";
    if (ViewData["format"] != null)
    {
        format = ViewData["format"].ToString();
        ViewData.Remove("format");
    }
}

@Html.TextBox("", (Model.HasValue ? Model.Value.ToString(format) : string.Empty), ViewData)

নীচে দেখায় সিনট্যাক্সের উদাহরণগুলি এবং আউটপুটযুক্ত এইচটিএমএল:

@Html.EditorFor(m => m.Date)
<input class="datepicker" data-val="true" data-val-required="&amp;#39;Date&amp;#39; must not be empty." id="Date" name="Date" type="text" value="01/08/2012">
@Html.EditorFor(m => m.Date, new { @class = "myClass", @format = "M/dd" })
<input class="myClass datepicker" data-val="true" data-val-required="&amp;#39;Date&amp;#39; must not be empty." id="Date" name="Date" type="text" value="1/08">

2

কারণ প্রশ্নটি এডিটরফোর্ডের জন্য নয় পাঠ্যবক্সের পরামর্শ কার্যকর হয় না।

স্বতন্ত্র ইনপুট বাক্সগুলি পরিবর্তনের জন্য, আপনি সম্পাদকফোর্ড পদ্ধতির আউটপুট প্রক্রিয়া করতে পারেন:

<%: new HtmlString(Html.EditorFor(m=>m.propertyname).ToString().Replace("class=\"text-box single-line\"", "class=\"text-box single-line my500pxWideClass\"")) %>

এছাড়া সব আপনার EditorFors পরিবর্তন করা সম্ভব হিসাবে এটি সক্রিয় আউট MVC সঙ্গে EditorFor টেক্সট বক্স বর্গ সেট করে .text বাক্স , অতএব আপনি শুধুমাত্র এই শৈলী ওভাররাইড করতে পারেন আপনার স্টাইলশীট অথবা পৃষ্ঠাতে।

.text-box {
    width: 80em;
}

অতিরিক্তভাবে, আপনি স্টাইলটি সেট করতে পারেন

input[type="text"] {
    width: 200px;
}
  • এটি। পাঠ্য-বাক্সকে ওভাররাইড করে এবং সমস্ত ইনপুট পাঠ্য বাক্স, সম্পাদক বা অন্যথায় পরিবর্তন করবে।

সমস্ত এডিটরফোর্ড () পাঠ্য বাক্সগুলি ইনপুট টাইপ = "পাঠ্য" নয়। ডেটটাইম বৈশিষ্ট্যগুলি টাইপ = "ডেটটাইম" হিসাবে রেন্ডার বলে মনে হচ্ছে।
ব্রায়ানারি

2

আমার এমভিসি 3 তে টেক্সটবক্সের প্রস্থ নির্ধারণ করার ক্ষেত্রেও সমস্যা ছিল, যখন ক্লাসস অ্যাট্রিবিউটটি টেক্সটআরিয়া নিয়ন্ত্রণের জন্য কাজ করেছিল তবে টেক্সটবক্সফোর্ড নিয়ন্ত্রণ বা এডিটরফোর্ড নিয়ন্ত্রণের জন্য নয়:

আমি অনুসরণ করার চেষ্টা করেছি এবং এটি আমার পক্ষে কাজ করেছে:

@ এইচটিএমএল.টেক্সটবক্সফোর্ড (মডেল => মডেল.টাইটেল, নতুন {শ্রেণি = "পাঠ্যবক্স", শৈলী = "প্রস্থ: 90%;"})

এছাড়াও এই ক্ষেত্রে বৈধতা নিখুঁতভাবে কাজ করছে।


2

আপনি যেভাবে এটি পেতে পারেন তার এক উপায় হ'ল ভিউ মডেলটিতে প্রতিনিধিদের রেখে বিশেষভাবে রেন্ডারিংটি প্রিন্টিং পরিচালনা করতে। আমি এটি একটি পেজিং ক্লাসের জন্য করেছি, আমি মডেলটিতে একটি সর্বজনীন সম্পত্তি প্রকাশ করিFunc<int, string> RenderUrl এটির সাথে কাজ করার জন্য করি।

সুতরাং কাস্টম বিটটি কীভাবে লেখা হবে তা নির্ধারণ করুন:

Model.Paging.RenderUrl = (page) => { return string.Concat(@"/foo/", page); };

Pagingশ্রেণীর জন্য ভিউ আউটপুট :

@Html.DisplayFor(m => m.Paging)

... এবং আসল Pagingদেখার জন্য:

@model Paging
@if (Model.Pages > 1)
{
    <ul class="paging">
    @for (int page = 1; page <= Model.Pages; page++)
    {
        <li><a href="@Model.RenderUrl(page)">@page</a></li>
    }
    </ul>
}

এটি অত্যধিক জটিল বিষয় হিসাবে দেখা যেতে পারে তবে আমি এই পেজারগুলি সর্বত্র ব্যবহার করি এবং এগুলিকে রেন্ডার করতে একই বয়লারপ্লেট কোড দেখে দাঁড়িয়ে থাকতে পারি না।


1

আপডেট: এইচএম, স্পষ্টতই এটি কাজ করবে না কারণ মডেলটি মান দ্বারা পাস করে তাই বৈশিষ্ট্যগুলি সংরক্ষণ করা হয় না; তবে আমি এই উত্তরটি একটি ধারণা হিসাবে রেখেছি।

আমি মনে করি, অন্য একটি সমাধান হ'ল আপনার নিজস্ব পাঠ্যবক্স / ইত্যাদি সহায়কগুলি যুক্ত করা, যা মডেলটিতে আপনার নিজস্ব বৈশিষ্ট্যগুলি পরীক্ষা করবে।

public class ViewModel
{
  [MyAddAttribute("class", "myclass")]
  public string StringValue { get; set; }
}

public class MyExtensions
{
  public static IDictionary<string, object> GetMyAttributes(object model)
  {
     // kind of prototype code...
     return model.GetType().GetCustomAttributes(typeof(MyAddAttribute)).OfType<MyAddAttribute>().ToDictionary(
          x => x.Name, x => x.Value);
  }
}

<!-- in the template -->
<%= Html.TextBox("Name", Model, MyExtensions.GetMyAttributes(Model)) %>

এটি এক সহজ তবে বিশ্বাসযোগ্য / নমনীয় নয়।


1

এটি এখানে সমাধান পেতে সবচেয়ে পরিষ্কার এবং সবচেয়ে মার্জিত / সহজ উপায়।

উজ্জ্বল ব্লগ পোস্ট এবং পাগল প্রফেসরের মতো কাস্টম এক্সটেনশন / সহায়ক পদ্ধতি লেখার ক্ষেত্রে কোনও অগোছালো ওভারকিল নেই।

http://geekswithblogs.net/michelotti/archive/2010/02/05/mvc-2-editor-template-with-datetime.aspx


0

আমি সত্যিই @jerdans এর উত্তর পছন্দ করেছি যা / ভিউ / শেয়ার্ড / এডিটরটেমলেটস ফোল্ডারে স্ট্রিং.অ্যাসেক্স নামের এডিটরটিম্পলেট ব্যবহার করে। এটি এই প্রশ্নের সর্বাধিক সোজা-এগিয়ে উত্তর বলে মনে হচ্ছে। তবে, আমি রেজার সিনট্যাক্স ব্যবহার করে একটি টেম্পলেট চেয়েছিলাম। এছাড়াও, মনে হয় এমভিসি 3 স্ট্রিং টেম্পলেটটিকে ডিফল্ট হিসাবে ব্যবহার করে (স্ট্যাকওভারফ্লো প্রশ্নটি দেখুন " স্ট্রিংগুলির জন্য এমভিসি ডিসপ্লে টেম্পলেটটি পূর্ণসংখ্যার জন্য ব্যবহৃত হয় ") সুতরাং আপনার স্ট্রিংয়ের পরিবর্তে মডেলটিকে বস্তু নির্ধারণ করতে হবে। আমার টেমপ্লেটটি এখনও পর্যন্ত কাজ করছে বলে মনে হচ্ছে:

@model object 

@{  int size = 10; int maxLength = 100; }

@if (ViewData["size"] != null) {
    Int32.TryParse((string)ViewData["size"], out size); 
} 

@if (ViewData["maxLength"] != null) {
    Int32.TryParse((string)ViewData["maxLength"], out maxLength); 
}

@Html.TextBox("", Model, new { Size = size, MaxLength = maxLength})

0

আমি সমাধান করেছি !!
রেজারের জন্য সিনট্যাক্সটি হ'ল:
@Html.TextAreaFor(m=>m.Address, new { style="Width:174px" })এটি শৈলীর পরামিতিটিতে আমি সংজ্ঞায়িত করে পাঠ্য ক্ষেত্রের প্রস্থকে প্রস্থের সাথে সামঞ্জস্য করে।
এএসপিএক্সের জন্য সিনট্যাক্সটি হ'ল:
<%=Html.TextAreaFor(m => m.Description, new { cols = "20", rows = "15", style="Width:174px" })%>
এটি কৌশলটি করবে

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