2009-04-22 29 views
0

asp.net mvcの部分的なビューの内部に値をポストし、親コンテナの内容をフォームの別のインスタンスに置き換えるAjaxフォームがあります。 。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 = "" })%>` 

を何かをどちらも。

EDIT:

私は、私が使用する必要が終わる可能性がある、JSのソリューションがあります実現が、バックエンドでそれを行うのいずれかの方法があった場合、私は不思議でしたか?

答えて

1

この解決策が「十分な」ものであるかどうかはわかりませんが、あなたのajaxコールのJSコールバック関数でフォームを空にできませんでしたか?あなたのサイト上でjQueryを使用している場合は、コールバック関数は次のようなものになります:

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

私はそれをするかどうか全くわからないが、しかし、場合には上記のコードは、あなたの送信ボタン上のテキストを削除し、セレクタを':input[type!=submit]'に変更します。

0

はいあなたは、AJAX操作のためのjQueryを使用するようにコードを変更する場合は、応答 に値を設定するためにjqueryのを使用する必要があり、あなたは成功コールバックにsettingvalues機能あなたを呼び出すことができます...例:

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