Html.EditorFor Установить значение по умолчанию

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

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

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

@Html.EditorFor(c => c.PropertyName, new { text = "5"; })
66 голосов | спросил Nate 19 Maypm11 2011, 21:30:00

10 ответов


0

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

//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" })
ответил Shadi 18 J000000Monday11 2011, 14:35:15
0

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

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

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

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

ответил Khepri 20 Mayam11 2011, 09:39:02
0

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

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

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

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

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

ответил Muhammad Adeel Zahid 20 Mayam11 2011, 10:13:13
0

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

ответил Anton Semenov 20 Mayam11 2011, 10:48:19
0

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

    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();
    } 

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

ответил Smithy 6 Jpm1000000pmFri, 06 Jan 2012 18:40:11 +040012 2012, 18:40:11
0

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

[DefaultValue(false)]
public bool TestAccount { get; set; }
ответил Zapnologica 15 PM00000020000000531 2014, 14:13:05
0

Добавьте его в ViewBag:

Контроллер:

ViewBag.ProductId = 1;

Вид:

@Html.TextBoxFor(c => c.Propertyname, new {@Value = ViewBag.ProductId})
ответил user2216667 18 J0000006Europe/Moscow 2018, 13:46:01
0

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

    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);
    }
ответил Ozan BAYRAM 27 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 27 Sep 2014 17:30:06 +0400 2014, 17:30:06
0

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

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

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

ответил Hamed R 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 26 Sep 2018 11:22:58 +0300 2018, 11:22:58
0

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

В контроле

 ViewBag.AAA = default_Value ;

В представлении

@Html.EditorFor(model => model.AAA, new { htmlAttributes = new { @Value = ViewBag.AAA } }
ответил Mohamed Wardan 19 12018vEurope/Moscow11bEurope/MoscowMon, 19 Nov 2018 21:46:33 +0300 2018, 21:46:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132