当我想在我的viewmodel中更新我的某些属性时,我处于这种情况,但如果我在提交时未指定使用null
,则我的其他一半属性将获得@Html.hiddenFor
形式。
一些明确说明的代码:
public class CountryViewModel(){
//I have 6 Country properties based on continent
public string countryEurope1{get; set;}
public string countryEurope2{get; set;}
public string countryEurope3{get; set;}
public string countryAsia1 {get; set;}
public string countryAsia2 {get; set;}
public string countryAsia3 {get; set;}
}
然后我想向国家展示,根据这个观点,我有2个动作链接来编辑基于其大陆的国家。
ShowCountry.cshtml
//View to show all my countries
@Html.DisplayFor(c => c.countryEurope1)
@Html.DisplayFor(c => c.countryEurope2)
@Html.DisplayFor(c => c.countryEurope3)
@Html.DisplayFor(c => c.countryAsia1 )
@Html.DisplayFor(c => c.countryAsia2 )
@Html.DisplayFor(c => c.countryAsia3 )
//action link going to edit europe country view
@Html.ActionLink("Edit Europe", "EditEuropeCountry", Model, null);
//action link going to edit europe country view
@Html.ActionLink("Edit Asia", "EditAsiaCountry", Model, null);
我的编辑欧洲观点 的 EditEuropeView.cshtml
@using (Html.BeginForm("submitEurope", "Setting", FormMethod.Post)) {
//Here I have to use @Html.HiddenFor to preserve value
@Html.HiddenFor(c => c.countryAsia1)
@Html.HiddenFor(c => c.countryAsia2)
@Html.HiddenFor(c => c.countryAsia3)
@Html.EditorFor(c => c.countryEurope1)
@Html.EditorFor(c => c.countryEurope2)
@Html.EditorFor(c => c.countryEurope3)
<input type="submit" name="Submit" value="Submit" />
}
正如您在EditEuropeView.cshtml
中所看到的,我必须使用countryAsia
指定@Html.Hiddenfor
个属性,如果我不这样做,则countryAsia
值将为null
当我提交表格时。而且我认为这种做法非常不合理,想象一下,如果我有100 countryAsia
个属性?我必须写@Html.hiddenfor
百次吗?
更新一些viewModel属性是否有更高效的技术/实践?