Значение по умолчанию для Html.EditorFor
Вопрос новичков.
У меня есть параметр, передаваемый в представление create. Мне нужно установить имя поля со значением по умолчанию.
@Html.EditorFor(model = > model.Id)
Мне нужно установить это поле ввода с именем Id со значением по умолчанию, которое передается в представление через actionlink.
Итак, как это поле ввода - @Html.EditorFor(model = > model.Id) - устанавливается со значением по умолчанию.
Будет ли следующая работа?. Когда число 5 является параметром, я перехожу в текстовое поле, чтобы установить значение по умолчанию.
@Html.EditorFor(c => c.PropertyName, new { text = "5"; })
Ответы
Ответ 1
Чистый способ сделать это - передать новый экземпляр созданного объекта через контроллер:
//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" })
Ответ 2
Вот что я нашел:
@Html.TextBoxFor(c => c.Propertyname, new { @Value = "5" })
работает с капиталом V, а не с нижним регистром v (предположение, являющееся значением, является ключевым словом, используемым обычно в сеттерах) Нижнее значение vs верхнего уровня
@Html.EditorFor(c => c.Propertyname, new { @Value = "5" })
не работает
Ваш код заканчивается таким образом, хотя
<input Value="5" id="Propertyname" name="Propertyname" type="text" value="" />
Значение против значения. Не уверен, что я слишком увлекся этим.
Почему бы просто не проверить действие контроллера, если значение proprety имеет значение или нет, и если оно не просто установит его в вашей модели просмотра на значение по умолчанию, и пусть оно связывается, чтобы избежать использования этой обезьяны в вид?
Ответ 3
Неправильно устанавливать значение по умолчанию в представлении. Вид должен выполнять работу по отображению, не более. Это действие нарушает идеологию паттерна MVC. Так что правильное место для установки значений по умолчанию - создать метод класса контроллера.
Ответ 4
Лучший вариант - сделать это в вашей модели просмотра, например
public class MyVM
{
int _propertyValue = 5;//set Default Value here
public int PropertyName{
get
{
return _propertyValue;
}
set
{
_propertyValue = value;
}
}
}
Затем на ваш взгляд
@Html.EditorFor(c => c.PropertyName)
будет работать так, как он хочет (если значение значения по умолчанию не будет)
Ответ 5
Я только что сделал это (первый ответ Шади), и это работает:
public ActionResult Create()
{
Article article = new Article();
article.Active = true;
article.DatePublished = DateTime.Now;
ViewData.Model = article;
return View();
}
Я мог бы поместить значения по умолчанию в мою модель, например, с помощью MVK-приложения-propper: (я использую 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();
}
Может ли кто-нибудь увидеть какие-либо недостатки?
Ответ 6
Не следует ли использовать @Html.EditorFor()
атрибуты, которые вы помещаете в свою модель?
[DefaultValue(false)]
public bool TestAccount { get; set; }
Ответ 7
Вставьте его в ViewBag
:
Контроллер:
ViewBag.ProductId = 1;
Вид:
@Html.TextBoxFor(c => c.Propertyname, new {@Value = ViewBag.ProductId})
Ответ 8
Это сработало для меня
В контроле
ViewBag.AAA = default_Value ;
на виду
@Html.EditorFor(model => model.AAA, new { htmlAttributes = new { @Value = ViewBag.AAA } }
Ответ 9
В методе конструктора вашего класса модели задайте значение по умолчанию, которое вы хотите.
Затем в первом действии создайте экземпляр модели и передайте ее вашему представлению.
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);
}
Ответ 10
Это мой рабочий код:
@Html.EditorFor(model => model.PropertyName, new { htmlAttributes = new { @class = "form-control", @Value = "123" } })
моя разница с другими ответами заключается в использовании значения в массиве htmlAttributes
Ответ 11
Это сработало для меня:
В контроллере
*ViewBag.DefaultValue= "Default Value";*
в представлении
*@Html.EditorFor(model => model.PropertyName, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter a Value", @Value = ViewBag.DefaultValue} })*