0

フォームで、非表示フィールドにいくつかの値を保持しようとしています:

@using (Html.BeginForm("Report", "Product", FormMethod.Post))
{
    @Html.HiddenFor(m => m.Id) // <-- sets always the Id of subsequent ProductId
    @Html.HiddenFor(m => m.ProductId)

    @Html.TextAreaFor(x => x.Comment, 5)

    <input type="submit" value="@StringResources.Product_Report" class="btn" />
}

Idモデルのフィールドに設定されている値に関係なく、ProductId代わりにプロパティの値が設定されます。スニペットの最初の割り当てでデバッガーを停止すると、すべて問題ないようです。しかし、Firebugs は、ProductIdプロパティの値が引き継がれたことを示しています。

これは私のアプリケーションでこの種の 2 番目の問題であるため、これはフレームワークのバグであると考えています。または、私が間違っていることは何ですか?

4

1 に答える 1

0

最後に私は解決策を得ました。これが私のGETコントローラーアクションの抜粋です:

public ActionResult Report(long id) // <-- this id is set in Razor
{
    var model = new ReportModel { ProductId = id };
    return View(model);
}

メソッドのパラメーターidは当然productIdです。IdRazor( @Html.HiddenFor(m => m.Id))のプロパティの値は、メソッド パラメータによって上書きされました

したがって、解決策は簡単です:

public ActionResult Report(long productId)
{
    var model = new ReportModel { ProductId = productId };
    return View(model);
}

私はその振る舞いを知りませんでした。私にとっては、まだ奇妙に見えます。これは設計によるものですか、それともフレームワークのバグですか?

于 2013-06-30T06:55:52.343 に答える