2013-06-29 3 views
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 было принято.

Поскольку это вторая проблема такого рода в моем приложении, я думаю, что это ошибка в структуре. Или что я делаю неправильно?

+0

можете ли вы объявить код своего модельного класса? – rene

+0

Модель (view-) состоит всего из 4 простых общедоступных свойств (строка и длина). Нет связи между ними. – core

+0

Не могли бы вы проверить внутри своего контроллера, что это за значение? –

ответ

0

Наконец-то я получил решение. Вот extact моего GET действия контроллера:

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

Параметр id в методе справедливо productId. Значение Id в Razor (@Html.HiddenFor(m => m.Id)) было , переписанное параметром метода.

Таким образом, решение просто:

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

Я не знал, что поведение, и для меня это выглядит еще странно. Это по дизайну или ошибка в рамках?

Смежные вопросы