Html.EditorFor установить значение по умолчанию - PullRequest
70 голосов
/ 19 мая 2011

вопрос новичка.У меня есть параметр, передаваемый в представление создания.Мне нужно установить имя поля со значением по умолчанию.@ Html.EditorFor (model => model.Id) Мне нужно установить это поле ввода с именем Id со значением по умолчанию, которое передается в представление через actionlink.

Итак, как можно это поле ввода- @ Html.EditorFor (model => model.Id) - получить значение по умолчанию.

Будет ли работать следующее ?? Где число 5 - это параметр, который я передаюв текстовое поле, чтобы установить значение по умолчанию.

@Html.EditorFor(c => c.PropertyName, new { text = "5"; })

Ответы [ 10 ]

97 голосов
/ 20 мая 2011

Вот что я нашел:

@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="" />

Соотношение стоимости и ценности. Не уверен, что мне это слишком понравится.

Почему бы просто не проверить действие контроллера, если свойство имеет значение или нет, и если оно не просто устанавливает его в вашей модели представления на значение по умолчанию, и позволяет ему связываться, чтобы избежать всей этой работы обезьяны в вид?

57 голосов
/ 18 июля 2011

Чистый способ сделать это - передать новый экземпляр созданного объекта через контроллер:

//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" })
15 голосов
/ 20 мая 2011

Неправильно устанавливать значение по умолчанию в представлении. Вид должен выполнять работу по отображению, не более. Это действие нарушает идеологию паттерна MVC. Так что правильное место для установки значений по умолчанию - создать метод класса контроллера.

14 голосов
/ 20 мая 2011

Лучше сделать это в вашей модели вида, например

public class MyVM
{
   int _propertyValue = 5;//set Default Value here
   public int PropertyName{
       get
       {
          return _propertyValue;   
       }
       set
       {
           _propertyValue = value;
       }
   }
}

Тогда, по вашему мнению,

@Html.EditorFor(c => c.PropertyName)

будет работать так, как вы этого хотите (если значение по умолчанию не будетбыть там)

3 голосов
/ 15 августа 2014

Разве @Html.EditorFor() не должен использовать атрибуты, которые вы указали в своей модели?

[DefaultValue(false)]
public bool TestAccount { get; set; }
3 голосов
/ 06 января 2012

Я только что сделал это (первый ответ Шади), и это доставляет удовольствие:

    public ActionResult Create()
    {
        Article article = new Article();
        article.Active = true;
        article.DatePublished = DateTime.Now;
        ViewData.Model = article;
        return View();
    } 

Я мог бы поместить значения по умолчанию в мою модель, как зависимый MVC-зависимый: (Я использую 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();
    } 

Кто-нибудь может увидеть какие-либо недостатки этого?

2 голосов
/ 18 июня 2018

засунуть в ViewBag:

Контроллер:

ViewBag.ProductId = 1;

Вид:

@Html.TextBoxFor(c => c.Propertyname, new {@Value = ViewBag.ProductId})
0 голосов
/ 19 ноября 2018

Это сработало для меня

В контроле

 ViewBag.AAA = default_Value ;

На виду

@Html.EditorFor(model => model.AAA, new { htmlAttributes = new { @Value = ViewBag.AAA } }
0 голосов
/ 26 сентября 2018

Это мой рабочий код:

@Html.EditorFor(model => model.PropertyName, new { htmlAttributes = new { @class = "form-control", @Value = "123" } })

моя разница с другими ответами заключается в использовании значения в массиве htmlAttributes

0 голосов
/ 27 сентября 2014

В методе конструктора вашего модельного класса задайте значение по умолчанию, какое хотите.Затем в вашем первом действии создайте экземпляр модели и передайте его в ваше представление.

    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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...