比方说,我有一个页面,允许编辑用户的细节,所以我有一个ViewModel是这样的: public class UserViewModel { public string Username { get; set; } public string Password { get; set; } public int ManagerId { get; set; } public string Category { get; set; } } 所以在我的EditUser操作中,我可以通过模型联编程序返回,然后我可以将其映射到域模型: public ActionResult EditUser(UserViewModel user) { … 但是,显示表单的页面还需要详细信息,例如pipe理员和类别列表,以便为这些字段提供下拉列表。 它也可能在边栏中显示其他用户的列表,以便您可以在正在编辑的不同用户之间进行切换。 那么我有另一个视图模型: public class ViewUserViewModel { public UserViewModel EditingUser { get; set; } […]
我是使用ASP.NET MVC开发Web应用程序的新手。 事实上,无论技术如何,我都是开发Web应用程序的新手。 目前,我正在开发一个项目,以更好地了解ASP.NET MVC框架。 在阅读SO和互联网上的其他地方时,似乎一致认为视图不应直接与业务对象(即实现业务逻辑的对象和包含关联属性的对象)直接相关。 相反,应该使用视图模型。 但是,这引起了一些问题: 我在哪里放我的validation码? 我需要添加代码来映射业务对象和视图模型。 事实上,这似乎相当麻烦,我还没有真正看到有人正确地解释为什么传递业务对象到视图是一个坏主意。 有人可以尝试解释这个(或指出一个很好的解释)? 只是一个澄清 ; 我没有find关于如何处理上述视图模型的两个问题的例子,而只是解释为什么我应该使用视图模型。
我有一个包含各种属性的视图AttributeView 。 还有一个button,按下时,它应该将默认值设置为属性。 我也有一个ViewModelBase类,它是所有ViewModel的基类。 问题是我似乎无法获得绑定到WPF命令的button。 我已经试过这个,但是它没有做任何事情: <Button Command="{Binding DataInitialization}" Content="{x:Static localProperties:Resources.BtnReinitializeData}"></Button> 命令是这样定义的(在ViewModelBase ): public CommandBase DataInitialization { get; protected set; } 并在应用程序启动时为该命令创build一个新的实例: DataInitialization = new DataInitializationCommand() 但是,WPF绑定似乎没有“find”命令(按下button什么都不做)。 当前视图中使用的ViewModelBase派生自ViewModelBase 。 还有什么我可以尝试(我对WPF很新,所以这可能是一个非常简单的问题)?
我有一个观点,列出添加到平面图的表格。 表派生自TableInputModel以允许RectangleTableInputModel , CircleTableInputModel等 ViewModel有一个TableInputModel的列表,它们都是派生types之一。 我有一个派生types的每个部分视图,并给出一个混合派生typesList框架知道如何呈现它们。 但是,在提交表单时,types信息会丢失。 我已经尝试使用自定义模型联编程序,但是因为types信息在提交时会丢失,所以无法工作… 有没有人试过这个?
我的程序由一个TreeView和两个位于地面的contentPresenters组成。 mainWindow, TreeView和每个contentPresenter都有自己的viewModels。 我想从TreeViewViewModel的mainWindowViewModel调用一个函数。 我需要这样做,因为mainWindowViewModel控制contentPresenters显示的内容,我想手动更新显示。 我猜我会做这样的事情… TreeViewViewModel : public class TreeViewViewModel { //Do I need to declare the MainWindowVM? public TreeViewViewModel() { … } private void function() { //Command that affects display //Manually call function in MainWindowVM to refresh View } } 我试图从TreeViewViewModel访问MainWindowVM ,使用: public MainWindowViewModel ViewModel { get { return DataContext as MainWindowViewModel; } […]
我有2个模型: public class Person { public int PersonID { get; set; } public string PersonName { get; set; } } public class Order { public int OrderID { get; set; } public int TotalSum { get; set; } } 我想在单视图中编辑BOTH类的对象,所以我需要这样的东西: @model _try2models.Models.Person @model _try2models.Models.Order @using(Html.BeginForm()) { @Html.EditorFor(x => x.PersonID) @Html.EditorFor(x => x.PersonName) @Html.EditorFor(x=>x.OrderID) @Html.EditorFor(x => […]
我在我的视图模型上使用jquery datepicker 这是我的看法: @Html.TextBoxFor(o => o.JobStartDate, new { id = "dt1", @class = "input-block-level" }) @Html.ValidationMessage("JobStartDate") 和我的脚本: $("#dt1").datepicker({ dateFormat: "dd/mm/yy" }); 一切工作正常,如果我的date<= 12,如果我的date是12,它会告诉我一个validation错误消息说:“字段开始date必须是一个date。 (我正在使用jQueryvalidation) 例如:date16/12/2014会给我的错误,而12/12/2014不会 这是我的观点模型: [Required] [DataType(DataType.Date)] [Display(Name = "Start Date")] public DateTime JobStartDate { get; set; } 我怀疑我的视图模型预计date的格式为mm / dd / yyyy,而在我的dateselect器中,我指定了dd / mm / yy,有没有办法告诉我的viewmodel我期待的是dd / mm / yy格式如果date> = 12,它不会抛出错误消息。
我是ASP.NET MVC的新手。 我在理解ViewModel的目的时遇到了一个问题。 什么是ViewModel,为什么我们需要一个ASP.NET MVC应用程序的ViewModel? 如果我能有一个简单的例子,那就更好了。