0

値タグがない 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());
}
4

3 に答える 3

0

やってみました:

@Html.HiddenFor(m => m.Id, new { id = "teamId", value=Model.Id })
于 2013-07-09T11:01:53.797 に答える
0

なぜ2番目のパラメータが必要なのですか?

@Html.HiddenFor(m => m.Id, new { id = "teamId" })

コントローラーからモデルを正しく返す場合、これで十分です。

@Html.HiddenFor(m => m.Id)
于 2013-07-09T11:04:03.953 に答える
0

問題を解決できたので、ここで自分の質問に答えます。このコードを質問に追加する必要がありました (これは、フォームでモーダルをロードするために呼び出されるコントローラーです)。

public ActionResult GetTeam(int? id)
{
    return PartialView("EditTeam", id.HasValue ? _teamLogic.GetById(id.Value) : new TeamModel());
}

問題は、渡された引数が「id」だったことです。「teamId」に変更すると機能しました。MVC は巧妙になろうとしていて、それをモーダルのキー値として識別したので、new を呼び出すときに空白に設定していると思います。

于 2013-07-09T12:15:16.283 に答える