使用MVC Bootstrap-Modal编辑狗。 问题是并非所有数据都正确显示在视图中。
在重构之前,我使用了索引上的[httpGet] Iactionresult向我返回了一个包含一个编辑表单的Edit.cshtml,并在asp-route-上返回了Edit.csthml上一个[httpPost]之后的Index.cshtml。请选择正确的狗来进行编辑。
重构后,我在索引上使用BootstrapModal编辑当前登录的DogOwner的狗。我有4个字段要编辑:名称,生育力,描述,InstagramUrl。名称和InstagramUrl的显示符合预期,而生育力和描述则未显示。
下一个代码片段来自Index.cstml,其中我对当前登录用户的每条狗使用一个Foreach(Model.Dogs中的var项目):
onAddClick = () => {
this.state.tempAddList.forEach((id) => {
this.setState({
relInfo: {
...this.state.relInfo,
modId: id
}
}, () => this.addRelation());
});
};
addRelation = () => {
EdmApi.insertModifier(this.state.relInfo)
.then(res => console.log(res))
.catch(err => console.log(err));
};
如果我将Description的Textarea标签更改为Input标签,则可以看到正确的数据,对于FertilityDropdown,我一无所知(在Enum中:Infertile = 0,Intact = 1)
如您在屏幕截图中所见,Textarea Description的数据已正确加载。 (值= Benny是最大!)
片段EditDogViewModel:
<div class="editWrapper">
<h3> Edit @item.FirstName</h3>
<form method="post" asp-controller="DogOwner" asp-action="EditDogPost" asp-route-dogId="@item.Id">
<div asp-validation-summary="ModelOnly"></div>
<div>
<label asp-for="@Model.EditDogViewModel.FirstName"></label><br />
<input asp-for="@Model.EditDogViewModel.FirstName" value="@item.FirstName" style="width:180px;" /><br />
<span asp-validation-for="@Model.EditDogViewModel.FirstName"></span>
</div>
<div>
<label asp-for="@Model.EditDogViewModel.DogFertility"></label><br />
<select asp-for="@Model.EditDogViewModel.DogFertility" asp-items="Html.GetEnumSelectList(typeof(DogFace.Domain.Model.Enums.DogFertility))" style="width:180px;">
<option value="@item.DogFertility"></option>
</select>
</div>
<div>
<label asp-for="@Model.EditDogViewModel.Description"></label><br />
<textarea asp-for="@Model.EditDogViewModel.Description" style="width:500px;" value="@item.Description"></textarea><br />
<span asp-validation-for="@Model.EditDogViewModel.Description"></span>
</div>
<div>
<label asp-for="@Model.EditDogViewModel.InstagramUrl"></label><br />
<input asp-for="@Model.EditDogViewModel.InstagramUrl" value="@item.InstagramUrl" style="width:500px;" /><br />
<span asp-validation-for="@Model.EditDogViewModel.InstagramUrl"></span>
</div>
<br />
<input type="hidden" asp-for="@Model.EditDogViewModel.Dog.Id" value="@item.Id" />
<input type="submit" value="Save" />
</form>
</div>
这是模式按钮:
public class EditDogViewModel
{
public int DogId { get; set; }
[Display(Name = "First name")]
public string FirstName { get; set; }
[Display(Name = "Fertility")]
public DogFertility DogFertility { get; set; }
[Display(Name = "Bio"), DataType(DataType.MultilineText)]
public string Description { get; set; }
[Display(Name = "Instagram")]
public string InstagramUrl { get; set; }
public string ReturnUrl { get; set; }
public Domain.Model.Dog Dog { get; set; }
public EditDogViewModel()
{
}
}
如果需要,可以随时询问更多代码段,或在http://pepijncappoen.visualstudio.com/DogFace上找到它们
感谢任何提示或技巧!