我可以通过Ajax请求将MV从MVC控制器返回到View

前端之家收集整理的这篇文章主要介绍了我可以通过Ajax请求将MV从MVC控制器返回到View前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在ASP.net MVC 2.0应用程序中这样做.我有一个包含两个字段number1和number2的表单.

我想使用ajax请求添加这两个数字.在控制器中,我收到两个数字,添加它们并将结果存储在另一个字符串中.那么,我这样做:

  1. [HttpPost]
  2. public string TestAjax(FormCollection form)
  3. {
  4. int strnum1 = Convert.ToInt32(form["txtBox1"].ToString());
  5. int strnum2 = Convert.ToInt32(form["txtBox2"].ToString());
  6. string strnum3 = Convert.ToString(strnum1 + strnum2);
  7. if (strnum3 != null)
  8. {
  9. return "<script>alert("some message")</script>";
  10. }
  11.  
  12. return string.Empty;
  13.  
  14. }

是否可以从控制器操作以字符串的形式返回java脚本

Is it possible to return java script in the form of string from controller actions

你可以返回一个JavaScriptResult

  1. [HttpPost]
  2. public ActionResult TestAjax(FormCollection form)
  3. {
  4. int strnum1 = Convert.ToInt32(form["txtBox1"].ToString());
  5. int strnum2 = Convert.ToInt32(form["txtBox2"].ToString());
  6. return JavaScript("<script>alert(\"some message\")</script>");
  7. }

为此,您必须配置AJAX请求以执行javascript.例如,如果您使用的jQuery如下所示:

  1. $.ajax({
  2. url: '/someaction',type: 'POST',data: { txtBox1: '12',txtBox2: '13' },dataType: 'script'
  3. });

作为替代方案,您可以返回JsonResult,它将模型序列化为JSON字符串:

  1. [HttpPost]
  2. public ActionResult TestAjax(FormCollection form)
  3. {
  4. int strnum1 = Convert.ToInt32(form["txtBox1"].ToString());
  5. int strnum2 = Convert.ToInt32(form["txtBox2"].ToString());
  6. string strnum3 = Convert.ToString(strnum1 + strnum2);
  7. return Json(new { sum = strnum3 });
  8. }

接着:

  1. $.ajax({
  2. url: '/someaction',success: function(result) {
  3. alert(result.sum);
  4. }
  5. });

正如您在此处所看到的,您不再将javascript与控制器中的C#代码混合使用.尊重DRY原则. javascript属于javascript文件.

作为对此控制器操作的进一步改进,我建议您引入视图模型并摆脱从FormCollection解析内容的可怕管道代码.这是默认模型绑定器的责任.

所以:

  1. public class Sumviewmodel
  2. {
  3. public int TxtBox1 { get; set; }
  4. public int TxtBox2 { get; set; }
  5. }

接着:

  1. [HttpPost]
  2. public ActionResult TestAjax(Sumviewmodel model)
  3. {
  4. int sum = model.TxtBox1 + model.TxtBox2;
  5. return Json(new { sum = sum });
  6. }

结论:我们已经将这个控制器动作放在节食上,并将javascript移动到它所属的位置.

猜你在找的Ajax相关文章