Asp.net 从多个超链接中识别ajax表单mvc3中的特定id

Asp.net 从多个超链接中识别ajax表单mvc3中的特定id,asp.net,asp.net-mvc,asp.net-mvc-3,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我目前正在从事一个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='

我目前正在从事一个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函数接收id为“null”。我想让函数知道在进入控制器时单击哪个超链接。需要帮助:(

您可以使用带有
名称
属性的提交按钮,而不是超链接

@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
}
@使用(Ajax.BeginForm(“单击”,新建AjaxOptions{UpdateTargetId=“showpage”}))
{
}
公共操作结果单击(字符串操作,…)
{
//在这里行动
}

根据我的理解,我认为你在追求这样的东西:

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");
    }

希望这对您有所帮助

我建议您对每个按钮使用单独的表单(与传统的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" />
}
@使用(Ajax.BeginForm(“单击”,新建{id=“0”},新建AjaxOptions{UpdateTargetId=“showpage”}))
{
}
@使用(Ajax.BeginForm(“单击”,新建{id=“1”},新建AjaxOptions{UpdateTargetId=“showpage”}))
{
}

现在,在
中单击
操作,您将获得正确的id。

您正在提交表单。模型绑定器将查找名为“id”的输入,以便与您的方法绑定,因为您没有名为“id”的输入你正在变为空。很抱歉,你能解释一下吗?我在这里很新。:/你想在这里实现什么?基本上,我的链接被图像覆盖。因此,每当用户单击链接/图像时,该函数将能够识别链接/图像id以触发某些内容。。。。
@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" />
}