0

現在、MVC3 プロジェクトに取り組んでいます。私は現在、この部分にこだわっています。

いくつかのハイパーリンクを含むこの Ajax フォームがあります

@using (Ajax.BeginForm("Click", new AjaxOptions { UpdateTargetId = "showpage" }))
{
     <a href="#" id="0" onclick='document.forms[0].submit()'>Link 0</a>
     <a href="#" id="1" onclick='document.forms[0].submit()'>Link 1</a>
}

リンクがクリックされるたびに起動するように、コントローラーに「クリック」と呼ばれるこの関数があります。

public ActionResult Click(String id)
{
   // Action here
}

ただし、ハイパーリンクの 1 つをクリックするたびに、クリック機能は ID を「null」として受け取ります。コントローラーに入ったときにどのハイパーリンクがクリックされているかを関数に認識させたい。助けが必要です:(

4

3 に答える 3

0

私の理解から、あなたは次のようなものを求めていると思います:

HTML :

    <div id="showpage">
    </div><br />
    @using (Ajax.BeginForm("Click", "", new AjaxOptions { UpdateTargetId = "showpage" }, 
               new { @id = "myAjaxForm" }))
    {
        @Html.ActionLink("Link 0", "Click", null, new { @id = "Link0", @data_val = "0", @class = "links" })
        @Html.ActionLink("Link 1", "Click", null, new { @id = "Link1", @data_val = "1", @class = "links" })
        @Html.Hidden("id", "");
    }

スクリプト:

<script>
    $(function () {
        $('a[class=links]').click(function (e) {
            e.preventDefault();
            $("input#id").val($(this).attr("data-val"));
            $('form#myAjaxForm').submit();
        });
    });
</script>

コントローラー:

    public ActionResult Click()
    {
        var m = new MyModel();
        return View(m);
    }

    [HttpPost]
    public ActionResult Click(string id)
    {
        return Content("ID = " + id, "text/html");
    }

お役に立てれば

于 2012-07-10T03:56:32.657 に答える
0

ボタンごとに個別のフォームを使用することをお勧めします (従来の Web フォームとは対照的に、ASP.NET MVC では恐れてはならないことです)。もちろん、送信するための意味的に正しい要素であるハイパーリンクの代わりに送信ボタンを使用することをお勧めします。形:

@using (Ajax.BeginForm("Click", new { id = "0" }, new AjaxOptions { UpdateTargetId = "showpage" }))
{
    <button type="submit" value="Link 0" />
}

@using (Ajax.BeginForm("Click", new { id = "1" }, new AjaxOptions { UpdateTargetId = "showpage" }))
{
    <button type="submit" value="Link 1" />
}

アクション内Clickで正しいIDを取得します。

于 2012-07-10T06:15:33.487 に答える
-1

ハイパーリンクの代わりに、プロパティで送信ボタンを使用できnameます。

@using (Ajax.BeginForm("Click", new AjaxOptions { UpdateTargetId = "showpage" }))
{
   <input type="submit" name="action" value="0" />
   <input type="submit" name="action" value="1" />
}

public ActionResult Click(string action, ... )
{
   // Action here
}
于 2012-07-10T03:41:15.430 に答える