モデルをビューに渡してから、ビューのuser.BannEndDateを変更してコントローラに戻したいと思います。 私はuser.BannEndDateで何をしても、ActionLinkは到着したモデルによって設定された値を常に渡します。誰もそれで私を助けることができますか?MVC Editor for dateはforeachループのサブプロパティを更新しません。
[モデル]
[DataType(DataType.Date)]
public DateTime? BannEndDate { get; set; }
[表示]
@foreach (var user in Model.Users)
{
@Html.ActionLink("Bann", "BannUser", "Account", new { userId = user.Id, bann = true, bannEndDate = user.BannEndDate} , null)
@Html.EditorFor(u => user.BannEndDate)
}
[コントローラー]
public ActionResult BannUser(string userId, bool bann, DateTime? bannEndDate){}
'ActionLink'がレンダリングされているため、予想される動作です'user.BannEndDate'は前の値です。これがASP.NET MVCのようなサーバー側フレームワークの本質です。それをサーバーに送り返したい場合は、フォームに入れて送信してください。 'ActionLink'をクライアント側で更新したい場合は、クライアント側のコードを使う必要があります。つまり、JavaScriptです。スタックオーバーフローでこれを行う方法について、いくつかの質問があります。 –
私はeditorforもクライアント側の価値を更新すると思っています。ありがとうございます。 – chrisk
'ActionLink()'を使うのではなく、 'FormMethod.Get'を使ってテキストボックスの値をあなたのGETメソッドにポストバックします(javascriptは必要ありません) –