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>
}

我在控制器中有一个名为“Click”的函数,每当点击链接时就会触发。

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

但是,每当我单击其中一个超链接时,单击函数都会将 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

我建议您为每个按钮使用单独的表单(这与经典的 WebForms 不同,这是您在 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 回答