我正在使用ASP.NET MVC 4,但是在理解方面存在一些问题。为了获得更好的解释,我将使用一种简单的“合成”情况。假设我有一个模型人,具有2个属性:
假设在我的控制器中我有私有财产Person。我可以在Index方法中初始化此对象,传递给View并构建html页面。好的。
现在,当用户在客户端更新人员实例的字段之一(他可以输入新人员名称或使用下拉列表选择新人员类型)时,我想立即更新我的模型。因此,我的一般问题是如何实现?
对我来说显而易见的解决方案:我可以使用新数据将ajax请求从JS发送到控制器。我以为我可以调用控制器的方法UpdateName(string name)并使用新数据手动更新属性Name。但是我的人员实例在此方法中为NULL!我的第二个问题是为什么我不能从其他方法访问初始化的模型对象?我认为这全是我对客户端服务器交互的不了解。
我的情况的最后一种情况是:当用户单击“保存”按钮时,我想将创建的人保存到服务器端的文件中,但是我不想使用任何形式并在单击此按钮后立即接收所有需要的数据(因为在我的实际任务中,我无法使用表单,并且单击按钮后也无法从html页面接收所有必需的字段)。
我找到了肮脏的解决方案。在JS中,我创建了另一个具有相同属性的类Person。现在,我可以根据需要更新此类的实例,并将json数据传递到服务器以进行保存。
有没有更好的解决方案?
具有javascript对象来表示您的模型并不那么肮脏。实际上,这就是我的做法。我使用KnockoutJS给我一个客户端模型-本质上是MVVM模式。
您试图以一种您无法使用的方式来使用MVC模型。但是,您可以按照自己的意愿使用Knockout模型。基本上,您具有服务器端模型的javascript表示,一旦完成,就将其发送到服务器。
为了使服务器端方法能够选择客户端模型,您只需确保发布请求中包含数据,并且只要属性名称在方法参数中相同即可匹配即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句