我需要使用 JavaScript 方法调用一个操作。也就是说,我有一个带有链接的页面,如下所示,
<a href="javascript:Sort();" >Click Me to Go</a>
并且我需要在单击此按钮时调用一个将返回 View 的操作,并且我希望发生回发。
下面是我发现有效的方法,但我不确定这是否是正确的方法,有没有办法使用 $post、$ajax 或 $json 来做到这一点?
这是因为我也需要将值传递给操作。
function Sort() {
location.href='@Url.Action("ActioName")';
}
最佳答案
我假设由于您没有在 Url.Action(...) 中提供路由值,因此您想要发布到操作的数据是由客户端上的用户设置的?
如果是这样,一种非常简单的方法是使用一个带有隐藏字段的表单(或者如果您想要直接用户交互,则可能是可见的),然后在排序上设置这些字段,然后提交表单。
例如:
<form id='sortform' action='@Url.Action("ActionName")' method='POST'>
<input type='hidden' name='MyFirstSortValue'>
<input type='hidden' name='MySecondSortValue'>
</form>
还有:
function Sort() {
var formElem = document.getElementById('sortform');
formElem.MyFirstSortValue.value = "blah";
formElem.MySecondSortValue.value = "blah";
formElem.submit();
}
如果您只是让用户选择排序信息,那么我建议让表单输入可见并直接使用它们,而不是在调用 Sort 时间接设置它们。
完成上述操作后,您可以使用 FormCollection 通过 Controller 访问信息。例如:
[HttpPost]
public ActionResult ActionName(FormCollection form)
{
string myFirstSortValue = form["MyFirstSortValue"];
string mySecondSortValue = form["MySecondSortValue"];
// Do something to sort the data in the model...
return View(yourModel);
}
这将导致在传输数据的同时进行回发,并显示所需的 View 。
关于jquery - 使用 javascript 调用操作并导致回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10118925/