0

ハロー、

部分ビューを使用して作成された html を返す ASP.NET MVC コントローラー メソッドを呼び出すための次の jquery コードがあります。

$("form[action$='ShowProperties']").submit(function() {
$.post($(this).attr("action"), $(this).serialize(), function(response) {

        $(this).children("div.serviceproperties").html(response);
       // $("div.serviceproperties").html(response);

    });
    return false;
});

レンダリングされた html は次のようになります。

<ul>
<li class="serviceactionitem">
    <form method="post" action="/Service/ShowProperties">
        <input type="submit" value="Show General" name="[Show]"/>
        <input id="id" type="hidden" value="1" name="id"/>
        <input id="serviceitem" type="hidden" value="general" name="serviceitem"/>
        <div class="serviceproperties"> </div>
    </form>
</li>
<li class="serviceactionitem">
    <form method="post" action="/Service/ShowProperties">
        <input type="submit" value="Show Specific" name="[Show]"/>
        <input id="id" type="hidden" value="1" name="id"/>
        <input id="serviceitem" type="hidden" value="specific" name="serviceitem"/>
        <div class="serviceproperties"> </div>
    </form>
</li>

応答は、フォーム要素内にある div 要素内に設定する必要がある html です。ページにいくつかのフォーム要素があり、適切なフォーム内の div を更新する方法がわかりません。もちろん、コメント付きのコードは、ページ上のすべてのフォームから div を更新します。

主なことは、 $(this) がフォーム要素を返さないことです。これはおそらく正常です。したがって、応答を処理している関数内の適切なフォーム要素に対処し、その中の div を見つけて変更する方法が必要です。

ありがとう

4

1 に答える 1

1

フォームを再選択するだけです。

 $("form[action$='ShowProperties'] div.serviceproperties").html(response);

または、最初に要素をキャプチャします。

$("form[action$='ShowProperties']").submit(function() {
var $form = $(this);

$.post($(this).attr("action"), $(this).serialize(), function(response) {

        $("div.serviceproperties",$form).html(response);

    });
    return false;
});
于 2009-09-09T10:55:04.330 に答える