如何防止在asp.net mvc ajax表单中自动填充发布值

时间:2009-04-22 21:56:56

标签: asp.net-mvc

在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解决方案,我可能最终不得不使用,但我想知道在后端是否有任何方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

我不确定这个解决方案对你来说是否“足够好”,但你不能只是从ajax调用中清空JS回调函数中的表单吗?如果您在自己的网站上使用jQuery,则回调函数可能如下所示:

function emptyFormOnReturn() {
    $(':input').val();
}

我不确定是否会,但如果上述代码也删除了提交按钮上的文字,请将选择器更改为':input[type!=submit]'

答案 1 :(得分:0)

是的,你应该使用jquery来设置响应值 如果您更改代码以使用jquery进行ajax操作,您可以在成功回调时调用settingvalues函数...示例:

http://docs.jquery.com/Ajax/jQuery.ajax#options