Формат html.В Набор Значений По Умолчанию
вопрос новичка.
У меня есть параметр, передаваемый в представление create. Мне нужно установить имя поля со значением по умолчанию.
@формат HTML.В(модели => модели.Идентификатор)
Мне нужно установить это поле ввода с именем Id со значением по умолчанию, которое передается в представление через actionlink.
Итак, как это поле ввода [email protected] (model => model.Id) -- получить значение по умолчанию.
будет ли работать следующее?? где число 5-это параметр, который я передаю в текстовое поле для установки значения по умолчанию.
@Html.EditorFor(c => c.PropertyName, new { text = "5"; }) 9 ответов:
чистый способ сделать это-передать новый экземпляр созданного объекта через контроллер:
//GET public ActionResult CreateNewMyEntity(string default_value) { MyEntity newMyEntity = new MyEntity(); newMyEntity._propertyValue = default_value; return View(newMyEntity); }Если вы хотите передать значение по умолчанию через ActionLink
@Html.ActionLink("Create New", "CreateNewMyEntity", new { default_value = "5" })
вот что я нашел:
@Html.TextBoxFor(c => c.Propertyname, new { @Value = "5" })работает с заглавной V, а не с нижним регистром v (предположение, что значение является ключевым словом, обычно используемым в сеттерах)Нижнее и верхнее значение
@Html.EditorFor(c => c.Propertyname, new { @Value = "5" })не работает
ваш код в конечном итоге выглядит так, хотя
<input Value="5" id="Propertyname" name="Propertyname" type="text" value="" />значение и ценность. Не уверен, что мне это понравится.
почему бы просто не проверить действие контроллера, если proprety имеет значение или нет, и если это не просто установить его там в вашей модели представления на ваше значение по умолчанию и позволить ему привязать, чтобы избежать всей этой работы обезьяны в представлении?
лучший вариант, чтобы сделать это в вашем представлении модели, как
public class MyVM { int _propertyValue = 5;//set Default Value here public int PropertyName{ get { return _propertyValue; } set { _propertyValue = value; } } }тогда на ваш взгляд
@Html.EditorFor(c => c.PropertyName)будет работать так, как вы этого хотите (если не будет значения по умолчанию)
Это не правильно, чтобы установить значение по умолчанию в поле зрения. Вид должен выполнять работу отображения, не более. Это действие нарушает идеологию паттерна MVC. Поэтому правильное место для установки значений по умолчанию-создать метод класса контроллера.
Я только что сделал это (первый ответ Шади) , и он работает удовольствие:
public ActionResult Create() { Article article = new Article(); article.Active = true; article.DatePublished = DateTime.Now; ViewData.Model = article; return View(); }я мог бы поместить значения по умолчанию в мою модель, как propper MVC addict: (я использую Entity Framework)
public partial class Article { public Article() { Active = true; DatePublished = Datetime.Now; } } public ActionResult Create() { Article article = new Article(); ViewData.Model = article; return View(); }может ли кто-нибудь увидеть какие-либо недостатки в этом?
не
@Html.EditorFor()использовать атрибуты, которые вы положили в вашу модель?[DefaultValue(false)] public bool TestAccount { get; set; }
засунь его в
:ViewBag:ViewBag.ProductId = 1;View:
@Html.TextBoxFor(c => c.Propertyname, new {@Value = ViewBag.ProductId})
в методе конструктора вашего класса модели установите значение по умолчанию все, что вы хотите. Затем в первом действии создайте экземпляр модели и передайте его в свое представление.
public ActionResult VolunteersAdd() { VolunteerModel model = new VolunteerModel(); //to set the default values return View(model); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult VolunteersAdd(VolunteerModel model) { return View(model); }
Это мой рабочий код:
@Html.EditorFor(model => model.PropertyName, new { htmlAttributes = new { @class = "form-control", @Value = "123" } })моя разница с другими ответами заключается в использовании значения внутри массива htmlAttributes
Comments