Привязать значение по умолчанию к TextBoxFor в MVC не работает - PullRequest
0 голосов
/ 27 сентября 2018

Когда я привязываю значение по умолчанию к textboxfor, но оно не работает должным образом

@Html.TextBoxFor(model => model.LinkAddress, htmlAttributes: new { @Value = ViewBag.link })

ViewBag.link - это значение, которое передается из контроллера

Я хочу установить значение ViewBag.link в качестве значения по умолчаниютекстового поля для, но он не работает, как ожидалось

Ответы [ 3 ]

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

Вы можете сделать:

@Html.TextBoxFor(model => model.LinkAddress, new {  @Value = @ViewBag.link })

Или

@Html.TextBox("LinkAddress", null, new { @Value = @ViewBag.link })
0 голосов
/ 28 сентября 2018

Ваше присвоение атрибута value с ViewBag не имеет смысла, поскольку TextBoxFor уже привязано к вашей модели представления, и вы можете просто назначить его из действия контроллера, которое возвращает представление с использованием метода GET ([HttpGet]) с соответствующей моделью представления:

[HttpGet]
public ActionResult ActionName()
{
    var model = new ViewModel();
    model.LinkAddress = "linkaddresshere";

    return View(model);
}

И оставить TextBoxFor как есть:

@Html.TextBoxFor(model => model.LinkAddress)

Если вы хотите присвоить значение помощника текстового поля со стороны клиента, используйте свойство jQuery.val() или valueиз vanilla JS после полной загрузки DOM-объектов :

// jQuery
$('#LinkAddress').val("linkaddresshere");

// vanilla JS
document.getElementById('LinkAddress').value = "linkaddresshere";
0 голосов
/ 27 сентября 2018

Если вы используете Model, вам не нужен ViewBag, потому что значение из свойства Model будет привязано к TextBoxFor.Но если вы используете только TextBox, вы должны сделать это двумя способами

Первый:

@Html.TextBox("LinkAddress", (String)ViewBag.link)

Второй:

<input type="text" value="@ViewBag.link" />
...