2016-03-23 21 views
0

なぜ@Html.LabelFor(model => model.data, ((string)ViewBag.id)) public ActionResult Index(Data item)に戻る100の代わりにnullが返されます。これを修正するには?公共のActionResultインデックス(データ項目)で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

viewbagはすでに@ Html.LabelFor(model => model.data、ViewBag.id)の文字列であるため、文字列をunboxすることにしました。 –

答えて

0

なぜ@ Html.LabelFor(モデル=> model.data、((文字列)ViewBag.id))のリターンの代わりにnull null

このメソッドでは、値を決して設定していません。そのメソッドの後にラベルに表示したい場合は、メソッドにViewBag.id = "100";を追加する必要があります。

これをデフォルト値として設定しようとすると、実際にフォームが正しく作成されません。 <%= Html.TextBoxFor(model => model.[fieldname], ViewBag.id))%>

これはData itemオブジェクトにポストバックされ、設定されます。 [フィールド名]を変更する必要があります。