我遇到了麻烦TryUpdateModel().我的表单字段以前缀命名,但我使用 - 作为我的分隔符而不是默认点.
<input type="text" id="Record-Title" name="Record-Title" />
Run Code Online (Sandbox Code Playgroud)
当我尝试更新模型时,它不会更新.如果我更改名称属性,Record.Title它可以完美地工作,但这不是我想要做的.
bool success = TryUpdateModel(record, "Record");
Run Code Online (Sandbox Code Playgroud)
是否可以使用自定义分隔符?
我有一个名为的实体Domain.Models.BlogPost,它包含以下属性:
我还有一个名为的实体Domain.Models.PostComment,它包含以下属性:
BlogPost包含很多PostComments.一对多关系.
现在我有这样的观点(通过html评论从博客文章代码中分离出评论表):
@model Domain.Models.BlogPost
@using Domain.Models;
@{
ViewBag.Title = "Post";
}
<div class="postTitle">@Model.Title</div>
<div class="subInfo">
Posted by @Model.Author on @Model.PostedDate.ToString("D")
</div>
<div class="postBody">
@Html.Markdown(Model.Body)
</div>
<br />
@Model.PostComments.Count Comment(s).
<div class="comments">
@foreach (PostComment postComment in Model.PostComments)
{
Html.RenderPartial("PostComment", postComment);
}
</div>
<!-- BELOW IS THE ADD COMMENT FORM -->
<div id="addComment">
@using (Html.BeginForm("AddComment", "Blog"))
{
<text>
@Html.Hidden("PostID", Model.PostID)<br />
Name: …Run Code Online (Sandbox Code Playgroud) 设置ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix将添加所有name 和 id属性.
我想知道是否有一种方法只是前缀id而不是name单独留下.
场景是这样的:AJAX在页面上多次加载局部视图.我们使用的JavaScript库需要使用ids,但我们也希望能够发布表单(因此name需要匹配服务器模型).
我们当前的解决方案是每次加载局部视图时生成一个唯一的数字,设置HtmlFieldPrefix为items[n](n生成的数字在哪里)以及我们采取行动来接收一个数组items(我们只需要接收一个).这为我们提供了一个全局唯一id的name,可以通过模型绑定器进行解析.
但这感觉很难看.有什么建议?