我可以通过Ajax请求将MV从MVC控制器返回到View
我想在ASP.net MVC 2.0应用程序中这样做.我有一个包含两个字段number1和number2的表单.
我想使用ajax请求添加这两个数字.在控制器中,我收到两个数字,添加它们并将结果存储在另一个字符串中.那么,我这样做: [HttpPost] public string TestAjax(FormCollection form) { int strnum1 = Convert.ToInt32(form["txtbox1"].ToString()); int strnum2 = Convert.ToInt32(form["txtbox2"].ToString()); string strnum3 = Convert.ToString(strnum1 + strnum2); if (strnum3 != null) { return "<script>alert("some message")</script>"; } return string.Empty; } 是否可以从控制器操作以字符串的形式返回java脚本
你可以返回一个 [HttpPost] public ActionResult TestAjax(FormCollection form) { int strnum1 = Convert.ToInt32(form["txtbox1"].ToString()); int strnum2 = Convert.ToInt32(form["txtbox2"].ToString()); return JavaScript("<script>alert("some message")</script>"); } 为此,您必须配置AJAX请求以执行javascript.例如,如果您使用的jQuery如下所示: $.ajax({ url: '/someaction',type: 'POST',data: { txtbox1: '12',txtbox2: '13' },dataType: 'script' }); 作为替代方案,您可以返回JsonResult,它将模型序列化为JSON字符串: [HttpPost] public ActionResult TestAjax(FormCollection form) { int strnum1 = Convert.ToInt32(form["txtbox1"].ToString()); int strnum2 = Convert.ToInt32(form["txtbox2"].ToString()); string strnum3 = Convert.ToString(strnum1 + strnum2); return Json(new { sum = strnum3 }); } 接着: $.ajax({ url: '/someaction',success: function(result) { alert(result.sum); } }); 正如您在此处所看到的,您不再将javascript与控制器中的C#代码混合使用.尊重DRY原则. javascript属于javascript文件. 作为对此控制器操作的进一步改进,我建议您引入视图模型并摆脱从FormCollection解析内容的可怕管道代码.这是默认模型绑定器的责任. 所以: public class SumViewModel { public int TxtBox1 { get; set; } public int TxtBox2 { get; set; } } 接着: [HttpPost] public ActionResult TestAjax(SumViewModel model) { int sum = model.TxtBox1 + model.TxtBox2; return Json(new { sum = sum }); } 结论:我们已经将这个控制器动作放在节食上,并将javascript移动到它所属的位置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |