调用控制器来自MVC 5中Button的Action方法

时间:2016-03-15 13:11:07

标签: asp.net-mvc asp.net-mvc-5

我尝试使用按钮在控制器Client中调用两种操作方法之一。这是一个简单的CRUD样式的Web应用程序,但是根本没有调用任何操作方法(我设置了断点)。我的HTML代码如下:

@if (Model == null || Model.ID == 0)
{
    <span class="input-group-btn"><button class="btn btn-default" onclick="location.href = ''@Url.Action("AddClient", "Client")''"/>Add New Details</span>
}
else
{
    <span class="input-group-btn"><button class="btn btn-default" onclick="location.href = ''@Url.Action("UpdateClient", "Client")''"/>Update Client Details</span>
}

我不希望页面重新加载,而是希望在不使用jQuery的情况下完成此操作(如果可能的话)。

2 个答案:

答案 0 :(得分:3)

您说您不想重新加载页面,但可能您希望在调用服务器后以某种方式更新页面。

而不是按钮我通常使用一个样式像按钮的链接:

@Ajax.ActionLink("Add New Details", "AddClient", "Client",
    new { /*action params*/ },
    new AjaxOptions()
        {
            Confirm = "Are you sure you want to add new details?",
            HttpMethod = "POST",
            OnComplete = "afterAddition()"
        },
    new { @class = "btn btn-default" }
)

答案 1 :(得分:0)

您在指定location.href的地方有额外的单引号,如下所示删除它们,它应该点击您的操作方法,

@if (Model == null || Model.ID == 0)
{
    <span class="input-group-btn"><button class="btn btn-default" onclick="location.href = '@Url.Action("AddClient", "Client")'"/>Add New Details</span>
}
else
{
    <span class="input-group-btn"><button class="btn btn-default" onclick="location.href = '@Url.Action("UpdateClient", "Client")'"/>Update Client Details</span>
}

如果您想要部分加载,可以使用MVC Ajax选项。