2016-10-12 4 views
-1

私はread-onlyの値を動的に初期化されるはずのテキストボックスを持っています。このフィールドは、前のページで作成したプレーヤーに対応する詳細値を入力するためのページに表示されます(この目的でRedirectToAction()を使用していますが、コントローラの "PlayerID"の値にアクセスできませんでした)。現在のページですので、TempDataを使用することにしました)。新しいプレーヤーが追加されるたびにPlayerIDが変更されるため、このフィールドには読み取り専用のままでその値が表示されます。 また、これは 'required'フィールドなので、値が設定されるまでフォームを送信できません。それはTempData["PlayerID"]であるように私は、このフィールドの値を設定するにはどうすればよいRazor:読み取り専用TextBoxフィールドに値を動的に割り当てる方法は?

@Html.TextBoxFor(model => model.PlayerID, htmlAttributes: new { @readonly = "read-only", @class = "control-label col-md-2", value = @Html.Raw(TempData["PlayerID"]) }) 

+1

は、[値]属性を設定しないでください。モデルをビューに渡す前に、GETメソッドの 'PlayerID'プロパティに値を代入します(' @readonly = "control-label col-md-2" 'のようなものはありません) '@ H​​tml.TextBoxFor(model => model.PlayerID、new {@readonly =" readonly "、@class ="コントロールラベルcol-md-2 "})' –

+0

@StephenMuecke 'GET'メソッドには次のコードがあります: 'PlayerID'は、その読み込み専用のテキストボックスには表示されません:: = {public_Result() –

+0

'SelectList'はドロップダウンリスト(テキストボックスではない)用です! –

答えて

0

あなたはどちらか、ページの読み込み、元上で動作するJavaScript持つことができます。

@section Scripts 
{ 
<script> 
    $(function(){ 
    $("#PlayerID").val('@TempData["PlayerID"]'); 
    }); 
</script> 
} 

それとも、あなたのアクション名は「PlayerDetails」だったので、もしあなたが、アクション内のビューのモデルを初期化することができますが、ビューは、ビューモデルにバインドされます

public ActionResult PlayerDetails() 
{ 
    return View(new Player{PlayerID=TempData["PlayerID"]} 
} 

この方法で、それが渡された値に初期化されます:あなたはこのような何かを持っている必要があります。

@Html.TextBox("PlayerID", @TempData["PlayerID"] ,new { @readonly = "read-only", @class = "control-label col-md-2"}) 

またはあなたの場合:あなたは、コードの下に試すことができ

0

`HtmlHelper`メソッドを使用している場合

@Html.TextBoxFor(model => model.PlayerId, htmlAttributes: new { @readonly = "read-only", @class = "control-label col-md-2", Value = @Html.Raw(TempData["PlayerID"]) }) 
関連する問題