ajax返回一个view,我可以通过Ajax请求将MV从MVC控制器返回到View

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

[HttpPost]

public ActionResult TestAjax(FormCollection form)

{

int strnum1 = Convert.ToInt32(form["txtBox1"].ToString());

int strnum2 = Convert.ToInt32(form["txtBox2"].ToString());

return JavaScript("alert(\"some message\")");

}

为此,您必须配置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移动到它所属的位置.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值