Значение по умолчанию для 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} })*