2016-03-23 4 views
0

Почему @Html.LabelFor(model => model.data, ((string)ViewBag.id)) возвращение в public ActionResult Index(Data item) null вместо 100. Как это исправить?ASP.NET MVC ViewBag return null

public ActionResult Index() 
    { 
     ViewBag.id = "100"; 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(Data item) 
    { 
     return View(); 
    } 

Index.cshtml

@model TestForm.Models.Data 
@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

@using(@Html.BeginForm()) 
{ 
    @Html.LabelFor(model => model.data, ((string)ViewBag.id)) 
    <input type="submit"/> 
} 
+3

'LabelFor()' не генерирует элемент управления формой. Очень неясно, что вы пытаетесь сделать, но вам нужно установить значение 'model.data = 100;' в контроллере, прежде чем передать модель в представление, а затем в представлении используйте '@ Html.TextBoxFor (m = > m.data) '(и удалить ваш' ViewBag') –

+0

@StephenMuecke Я думаю, этого достаточно для ответа. –

+0

Вы делаете nned для того, чтобы удалить строку, поскольку viewbag уже является строкой @ Html.LabelFor (model => model.data, ViewBag.id) –

ответ

0

Почему @ Html.LabelFor (модель => model.data ((строка) ViewBag.id)) возвращение в общественном Индекс ActionResult (пункт Data) null вместо 100

Вы никогда не устанавливаете значение в этом методе. Если вы хотите, чтобы он отображался на этикетке после этого метода, вам нужно добавить метод ViewBag.id = "100";.

Если вы пытаетесь установить этот набор в качестве значения по умолчанию, то вы действительно создаете свою форму неправильно. Это должно быть <%= Html.TextBoxFor(model => model.[fieldname], ViewBag.id))%>

Это будет затем отправлено обратно в ваш объект Data item и будет установлено. Обратите внимание, что вы должны изменить [fieldname]

Смежные вопросы