値タグがない HiddenFor フィールドがあります。これは、剃刀ビュー エンジンを使用する MVC4 プロジェクトにあります。
<input name="Id" id="teamId" type="hidden" data-val-required="The Id field is required." data-val-number="The field Id must be a number." data-val="true"/>
これは以下から生成されます。
@Html.HiddenFor(m => m.Id, new { id = "teamId" })
私のモデルから (System.ComponentModel.DataAnnotations を使用):
public class TeamModel
{
public int Id { get; set; }
[Required(ErrorMessage = "Please enter a team name"), MaxLength(25)]
public string Name { get; set; }
}
新しいモデルをフォームに渡すとき、次のように Id フィールドを手動で設定しようとしました:
return PartialView("EditTeam", new TeamModel{Id = 5});
ただし、これはまだ値を表示しません。奇妙なことに、クライアントの検証には合格していますが、サーバー側の検証に失敗しています。私はうまく動作する別のプロジェクトで同様の設定をしています。それらの間に違いは見られません。私が見逃した明らかなものはありますか?ありがとう :)
編集:私が使用する場合:
@Html.Hidden("test", Model.Id)
できます。HiddenFor の何かが値を空白に設定しています (未加工の HTML を見ると、値フィールドはそこにありますが、次のように設定されています: value="")
編集:完全を期すために、ここにコントローラーがあります(問題の根本でもあります):
public ActionResult GetTeam(int? id)
{
return PartialView("EditTeam", id.HasValue ? _teamLogic.GetById(id.Value) : new TeamModel());
}