我的控制器上有一个IActionResult,它通过AJAX返回一个部分视图:
master_sample.sort_values('Date') \
.groupby('User ID', as_index=False)['Movie ID'] \
.apply(' '.join)
如果我在Razor视图中添加[HttpGet]
[Route("/propertycoverages/loss")]
public IActionResult GetNewLoss()
{
return PartialView("_Loss");
}
标记,请执行以下操作:
<a>
在<a asp-controller="PropertyCoverages" asp-action="GetNewLoss" id="loss-btn" data-ajax="true" data-ajax-update="losses" data-ajax-success="addLoss" data-ajax-method="GET">Add</a>
代码中生成以下HTML属性:<a>
它按预期工作,并在页面内返回局部视图。但是,如果我尝试使用按钮:
href="/propertycoverages/loss"
在<button asp-controller="PropertyCoverages" asp-action="GetNewLoss" id="loss-btn" type="submit" data-ajax="true" data-ajax-update="losses" data-ajax-success="addLoss" data-ajax-method="GET">Add</button>
代码中生成以下HTML属性:<button>
我被重定向到formaction="/propertycoverages/loss"
这不是我想要的。 我有没有办法让按钮的行为与/propertycoverages/loss
标签相似?
注意:这些元素位于<a>
内。我也尝试将<form>
从<button>
切换到type="submit"
,但控制器操作不会被调用。
答案 0 :(得分:1)
您需要将JavaScript方法附加到按钮点击操作。
<button onclick="myFunction()">Click me</button>
在JS方法中,您可以回调动作获取HTML并在AJAX调用成功方法中放置页面。
function onClick() {
var url = [setURL];
$.ajax({
type: "GET",
url: url,
data: { },
success: function (response) {
$('#[setElementToReplace]').html(response);
}
});
}
答案 1 :(得分:0)
您好主要有三种方法可以从提交按钮调用控制器操作。
Way1:使用简单表格
@using (Html.BeginForm("ActionName", "ControllerName"))
{
<input type="submit" name="add" value="Add" />
}
注意:默认情况下,这是一个获取请求,如果需要,您可以更改formmethod = post
方式2:使用html属性
@using (Html.BeginForm())
{
<input type="submit" name="add" value="Add" formaction="/anycontrollername/anyactionname" formmethod="get"
/>
}
方式3:使用jquery
@using (Html.BeginForm())
{
<input type="submit" name="add" value="Add" id=”save”
/>
}
$(document).ready(function () {
$("#save").click(function () {
$("form").attr("action", "/anycontroller /anyaction");
});
});
似乎第二种方式适合您的要求,
希望上面的答案很有用。