这样的设计是否有违背MVC设计原则??

本文讨论了一个看似违背MVC设计原则的现象,在ASP.NET MVC框架中,当客户端请求控制器时,返回的模型并非预期值。文章通过具体示例展示了如何在控制器的动作方法中修改模型,并分析了为何视图接收到的模型并未反映出地址栏修改后的值。

MVC 皆知为 Model-View-Controller

请求模型-〉Client发现请求-〉Controller接收+处理-〉返回Model给前端-〉前端接收处理模型Result

但是最近发现一个请求仿佛违背了MVC当初的设计原则(请高手指点一二):

定义模型:

public class Person
{
public string Name { get; set; }

public int Age { get; set; }
}

Controller中Action:

// GET: /Main/
public ActionResult Index(Person p)
{
p.Name = "Tom";
p.Age = 20;
return View(p);
}

运行结果如下:

看起来没有问题 View中的确 显示为Model内容,

一、现在我们修改一下 请求地址栏的信息 如图:

二、修改姓名信息 ,然后提交表单

问题出现了吧  其他地方都没有修改 只是修改了一下地址栏的信息或表单信息 返回的Model仍为原先值  为什么会变化那么大??

原因如下:

MVC 表单扩展类中 将InputHelper取值规则改为 优先取ModeState 然后取ViewData

 

那么问题来了,client请求Controller时返回的Model 并不是我们修改后的值,是不是违背了当初的设计??

转载于:https://www.cnblogs.com/tx720/p/5620197.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值