在asp.net mvc局部视图中,我有一个Ajax表单,它发布一个值并用其他表单实例替换其父容器的内容。
Index.aspx查看:
<div id="tags">
<% Html.RenderPartial("Tags", Model); %>
</div>
Tags.ascx局部视图:
<% using(Ajax.BeginForm("tag", new AjaxOptions { UpdateTargetId = "tags" }))
{ %>
Add tag: <%= Html.TextBox("tagName")%>
<input type="submit" value="Add" />
<% } %>
控制器:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Tag(string tagName) {
// do stuff
return PartialView("Tags", ...);
}
问题是当表单的新实例返回时,已发布的值已存储在输入字段中。就像我发布的那样,'tagName'将保留在文本框中。 Firebug显示该值在响应中是硬编码的。
返回局部视图时有没有办法清除输入文本框的值?
我试过了:
<%= Html.TextBox("tagName", string.Empty)%>
和
<%= Html.TextBox("tagName", string.Empty, new { value = "" })%>`
两者都没有做任何事情。
编辑:
我意识到有js解决方案,我可能最终不得不使用,但我想知道在后端是否有任何方法可以做到这一点?
答案 0 :(得分:1)
我不确定这个解决方案对你来说是否“足够好”,但你不能只是从ajax调用中清空JS回调函数中的表单吗?如果您在自己的网站上使用jQuery,则回调函数可能如下所示:
function emptyFormOnReturn() {
$(':input').val();
}
我不确定是否会,但如果上述代码也删除了提交按钮上的文字,请将选择器更改为':input[type!=submit]'
。
答案 1 :(得分:0)
是的,你应该使用jquery来设置响应值 如果您更改代码以使用jquery进行ajax操作,您可以在成功回调时调用settingvalues函数...示例: