使用jquery将数据发送到MVC控制器

我有一个ASP.NET MVC3应用程序,当用户点击我的锚标签时,我想将3个数据发送到一个动作:

<a onclick='editDescription()'> 

这是调用我的动作的javascript:

  function editDescription(docId,fileName,description) { var url = "@Url.Content("~/OrderDetail/_EditDescription/")" + docId+'/'+ fileName + '/' + description; //do the rest} 

我的行动:

  public ActionResult _EditDescription(string id,string filename, string descritpion) 

我关注的是文件名和描述,因为这些可以是loooooong,我不希望url如此出现:

  http://localhost/OrderDetail/_EditDescription/123/some long filename.pdf/this is a long description for the name 

如何将数据发送到我的操作而不必像查询字符串一样发送? 谢谢

您可以使用jQuery $ .ajax方法:

 



即使它仍然有效,请确保将Controller方法更改为:

 [HttpPost] public ActionResult _EditDescription(string id, string filename, string descritpion) 

如果您喜欢通过ajax $.post或通过[HttpPost]属性执行操作,您可以完整填写表单。

将您的操作声明为POST

 [HttpPost] public ActionResult _EditDescription(string docId, string filename, string description) 

创建一个不可见的HTML表单:

 

填写表格并用JS提交:

 function editDescription(docId, fileName, description) { document.editDescriptionForm.docId = docId; ... document.editDescriptionForm.submit(); }