jquery - 使用 javascript 调用操作并导致回发

标签 jquery asp.net-mvc-3 razor

我需要使用 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/

相关文章:

c# - 如何在 ASP.NET MVC3 的 URL 中将 _ 替换为 - ?

javascript - html 表中可编辑字段的更改事件仅影响顶行计算字段

javascript - 在 Bootstrap 多选中使用 onChange

javascript - 为什么我的 javascript 无法看到选择了哪个 html 选项

jquery - 创建一个 Jquery 滑入式菜单

Javascript(或jquery)获取文本区域值的每个图像标签

asp.net-mvc-3 - ASP.NET MVC : Passing a string parameter to an action using RedirectToAction()

asp.net-mvc - MVC3 Url.Action 查询字符串生成

c# - 循环遍历 Razor 中的模型内容

asp.net-mvc - Razor View 抛出 "The name ' 模型'在当前上下文中不存在”