在我看过的大部分代码中(在SO上,我都会在我自己的代码中使用codeproject.com),我已经看到为一个类包含的每个私有字段创建公共属性,即使它们是最多的基本类型get; set;:
private int myInt;
public int MyInt
{
get { return myInt; }
set { myInt = value }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:这与以下方面有何不同:
public int MyInt;
Run Code Online (Sandbox Code Playgroud)
如果我们应该使用属性而不是公共字段,为什么我们应该在这种特定情况下使用它们呢?(我不是在讨论更复杂的例子,其中getter和setter实际上做了一些特殊的事情,或者只有一个get或set(只读/写)而不是只返回/设置私有字段的值).它似乎没有添加任何额外的封装,只在IntelliSense中提供一个漂亮的图标,并放在类图中的特殊部分!
现在学习ASP MVC,仅仅是我在MVC上的第3周
我对建模传递做了一些测试,基本上控制器只是获取模型,并且没有做任何事情就进入视图,但似乎代码失败了.
下面是我创建的ViewModel
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Bank2.Models.ViewModel
{
public class PaymentView
{
public List<Wires_SWIFT> lists{get; set;}
public string b_str{get; set;}
public string o_str{get; set;}
}
}
Run Code Online (Sandbox Code Playgroud)
这是视图:
@model ViewModel
@using(Html.BeginForm("Payment","Home",FormMethod.Post)){
@Html.TextBoxFor(d=> d.o_str)<br/>
@Html.TextBoxFor(d=> d.b_str)<br/>
<input type="submit" name="Search">
}
Run Code Online (Sandbox Code Playgroud)
控制器抓住模型并立即通过
...
[HttpPost]
public ActionResult Payment(ViewModel m){
return View(m)
}
...
Run Code Online (Sandbox Code Playgroud)
我在texbox中键入了两个字符串:比如"aa"和"bb",在我点击提交后,他们应该在那里,因为相同的对象被传回,但现在该字段为空
我是否错过了关于建模传递的重要内容?欢迎任何形式的建议