我找不到任何关于在ASP.NET MVC 2 ViewModel方法中使用多个表单的文档.
ie在内置应用程序中,当您选择New MVC2 Web应用程序时,注册页面使用ViewPage,其继承如下:
Inherits="System.Web.Mvc.ViewPage<rs30UserWeb.Models.RegisterModel>"
我想在具有多个表单的页面上使用该方法,但RegisterModel仅支持一个表单.
我在接口中定义了一个属性:
Boolean IsBusy { get; }
Run Code Online (Sandbox Code Playgroud)
它在课堂上实现为:
private Boolean _isBusy = false;
public Boolean IsBusy
{
get
{
return this._isBusy;
}
private set
{
if (this._isBusy != value)
{
this._isBusy = value;
this.OnPropertyChanged("IsBusy");
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我运行应用程序时,在构造函数中检查IsBusy值时,我总是会遇到以下类型的错误:
'IsBusy'抛出了'System.NullReferenceException'类型的异常'bool {System.NullReferenceException}
我无法弄清楚.如果我改变一切Boolean到bool,得到同样的错误.
我该如何解决?
我有一个asp.net-mvc网站,我想在每个页面上显示一些信息.我创建了一个名为BaseViewModel的类,每个viewModel类都继承自BaseViewModel.Site.Master视图直接绑定到BaseViewModel.
现在,基类有一个名为MenuLinks的属性.
menulinks属性从数据库调用填充,因此在每个控制器操作上,我正在添加一个新行:ViewModel:
viewModel.MenuLinks = _repository.GetMenuLinks();
Run Code Online (Sandbox Code Playgroud)
我有很多控制器,动作和视图模型.有没有更清洁的方法,我可以做到上述,而不必将这一行放在每一个控制器动作上面.
我有一个学生的时间表,所以他们可以参加本周的课程.而且我不知道应该如何构建我的ViewModel.
我决定这个:
class CourseTableViewModel
{
CourseTableHeaderViewModel[] Headers;
CourseTableRowViewModel[] Rows;
}
class CourseTableRowViewModel
{
int HourStart;
CourseTableCellViewModel[] Cells;
}
class CourseTableHeaderViewModel
{
DateTime Date;
}
class CourseTableCellViewModel
{
CourseViewModel[] Courses;//null if no course at this time
}
Run Code Online (Sandbox Code Playgroud)
但对我而言,我的视图模型似乎很重要.也许我应该只发送CourseViewModel []然后在我的cshtml上执行所有表/行/单元格工作.
viewmodel应该看起来像我的视图吗?
编辑:我会将我的数据显示为时间表,将星期几作为标题,并在一天的前一小时.如果一个课程需要2个小时,它将占用2行.每个课程的单元格上都会有一个"参加"或"取消"按钮.
PS:我知道jquery fullcalendar,但我只是想学习如何在这里构建我的viewmodel.
问题
我目前正在为我的MVC项目添加自动化,而且我被卡住了.现在我有一个User模型用于表示数据库中的数据.我必须将该模型映射到EditUserModel,这将在调用Edit方法时使用.EditUserModel IEnumerable<SelectListItem>(对于下拉菜单)我似乎无法弄清楚如何映射.
试图解决方案
截至目前,我还没有尝试过任何事情.我不确定在哪里IEnumerable<SelectListItem>或哪里填充它的最佳位置.现在它正在控制器中填充.
User.cs
public class User
{
[Key]
public int UserID { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public int RoleID { get; set; }
[ForeignKey("RoleID")]
public virtual Role Role { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
EditUserModel.cs
public class EditUserViewModel
{
[HiddenInput(DisplayValue = false)]
public int UserID { get; set; }
[Required]
public String Username { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password …Run Code Online (Sandbox Code Playgroud) 在MVVM模式中,可以接受甚至可以在后面的视图代码中访问ViewModel属性吗?
我有一个可观察的集合,它在ViewModel中填充.我需要在视图中使用它来绑定带有链表的无尽的自动收报机.即
private LinkedList<Border> tickerForex = new LinkedList<Border>();
public ForexBuy()
{
InitializeComponent();
DataContext = new ForexViewModel();
}
private void InitializeForexTicker()
{
CanvasForexBuyTicker.Children.Clear();
foreach (var currency in DataContext.Currencies) //Is this possible/allowable???
{
AddTickerItem(currency);
}
CanvasForexBuyTicker.Dispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(delegate
{ var node = tickerForex.First;
while (node != null)
{
if (node.Previous != null)
{
Canvas.SetLeft(node.Value, Canvas.GetLeft(node.Previous.Value) + node.Previous.Value.ActualWidth + gap);
}
else
{
Canvas.SetLeft(node.Value, CanvasForexBuyTicker.Width + gap);
}
node = node.Next;
}
return null;
}), null);
}
void AddTickerItem(Currency currency)
{
Border border …Run Code Online (Sandbox Code Playgroud) 我是MVVM的新手,现在就完成我的第一个POC。但是,我一直在努力解决一个问题,持续了2天。向你们解释的想法可能会帮助您如此迅速地解决问题。现在让我简要介绍一下我的问题。我有WPF MVVM应用程序,其主视图绑定到MainViewModel。我在这里有Textblock,可以在加载屏幕的同时绑定来自视图模型的某些内容,这真棒。我也有绑定到ChildViewModel的ChildUserControl。现在,我需要在用户控件级别执行的某些操作上,将不同的内容从用户控件绑定到主窗口中的Textblock。怎么可能?
这是我有MainWindow.Xaml的示例代码
<Window.Resources>
<viewModel:MainViewModel x:Key="mainWindowViewModel"/></Window.Resources>
<TextBlock Name="txtStatus" Text="{Binding StatusMessage, Mode=OneWay }"/>
Run Code Online (Sandbox Code Playgroud)
ChildUserControl.xaml
<UserControl.Resources>
<viewModel:ChildModelView x:Key="ChildModelView"/> </UserControl.Resources>
public class ChildModelView : BaseViewModel
{
// Some child level logic..
// then need to update the txtStatus text block from parent
}
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助。
我在ParentViewModel上有一个方法,它返回一个ViewModel对象的RACSequence,如下所示:
- (RACSequence *) viewModels
{
return [self.models.rac_sequence map:^id(Model *model) {
return [[ViewModel alloc] initWithModel: model];
}];
}
Run Code Online (Sandbox Code Playgroud)
每个ViewModel都有一个状态属性,其上是一个枚举,有3种状态:NotStarted,InProgress和Completed.当我的序列中的所有ViewModel都具有Completed状态时,我知道ParentViewModel是有效的.我在ParentViewModel上有一个validSignal,我希望从viewModels序列中获得有效的事实.目前我有这个代码:
BOOL valid = [[self viewModels] all:^BOOL(ViewModel *vm) {
return vm.state == Completed;
}];
Run Code Online (Sandbox Code Playgroud)
这给了我一个指示,如果序列中的所有ViewModel都是有效的.然后我怎么能把它变成一个RACSignal,它会在每次ViewModel上的state属性发生变化时更新?
我有一个使用MVVM的WPF应用程序。用户编辑数据时,如果满足某些条件,他们将需要填写修订说明以进行审核。如果他们不需要,我会隐藏修订说明文本框以保持UI清晰。
目前,这是通过将包围文本框(及其标签)的Grid的Visibility属性绑定到viewmodel的bool属性来完成的。当布尔值更改时,版本注释文本框将被隐藏或根据需要显示。
这可以正常工作,但仅显示文本框。我想对其进行动画处理,使其从零高度增加到默认高度或类似的高度。
知道我该怎么做吗?我以前做过动画,但这总是在我手动触发动画时进行。在这种情况下,我想在XAML中声明动画,因此绑定更改时它会自动发生。
有人能指出我正确的方向吗?
我有一个MVC 4应用程序,有几个视图.即产品,食谱,Distrubutors和商店.
每个视图都基于一个模型.
让我们保持简单,并说我所有的控制器都传递类似的视图模型,看起来像我的产品操作:
public ActionResult Index()
{
return View(db.Ingredients.ToList());
}
Run Code Online (Sandbox Code Playgroud)
好的,这很好,没问题.但是现在我的所有页面都工作了,我想改变我的导航(每个视图有下拉列表)来加载该模型中的项目.
所以我会有4个按钮(产品,食谱,分配器和商店)的导航.
当您翻转每个按钮(假设我们滚动产品按钮)时,下拉列表会列出产品.
要做到这一点,我需要创建一些类型的ViewModel,其中包含所有这四个模型.显然,我不能为每个导航元素剪切出PartialView并使用
@model IEnumerable<GranSabanaUS.Models.Products>
Run Code Online (Sandbox Code Playgroud)
并为该下拉列表重复产品,因为那时导航只能在产品视图中使用,而不能在其他任何地方使用.
(After the solution)
AND YES ROWAN你在我创建的导航类型中是正确的,请看这里:

viewmodel ×10
c# ×4
mvvm ×3
wpf ×3
asp.net-mvc ×2
animation ×1
asp.net ×1
automapper ×1
binding ×1
datacontext ×1
navigation ×1
objective-c ×1
xaml ×1