我正在用wpf写作.在我的viewModel中,我有一个打开新窗口的命令.但是,有时这个子窗口位于父窗口下.(例如,如果我在我的应用程序中工作,那么打开浏览器并希望返回我的应用程序).窗口打开如下:
MyViewModel vm = new MyViewModel(oper);
Mywindow window = new MyWindow();
//Initialize viewModel and set window.DataContext to this viewModel
CWPFWindowWithViewModelHelper<IWindowWithViewModel>.InitializeViewModel(window, vm);
window.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
我希望这个子窗口在打开时始终可见.我怎样才能做到这一点?
是否可以将数据绑定到隔离存储中的映像而无需代码或转换器?
通过创建一个简单的Bug/Feature跟踪系统,我正在学习ASP.NET MVC和Entity Framework Code First,LINQ.我想通过让用户提交上面的表单并将提交的内容显示在下面来模仿Twitter界面.我不确定如何构建强类型视图和所述模型.我想将我的创建和索引视图合并到一个视图中,问题是创建采用单一类型Entry(Pylon.Models.Entry),而索引采用入口(IEnumerable<Pylon.Models.Entry>)的IEnumerable .下面是我的viewmodel类和Display视图.我只是从"创建"和"索引"视图中复制了脚手架生成的代码,显然混合不同的模型会导致运行时错误,从而导致视图被破坏.我的问题是如何重组视图.
// Entry ViewModel
public class EntryViewModel
{
public Entry Entry { get; set; }
public IEnumerable<Entry> Entries { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
@* Display View *@
@model ?
@{
ViewBag.Title = "Display";
}
<hr />
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Entry</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.OpenDate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.OpenDate)
@Html.ValidationMessageFor(model => model.OpenDate) …Run Code Online (Sandbox Code Playgroud) AFAIK,有两种方法可以将数据从控制器传递到视图:一种是松散类型(使用ViewBag或ViewData),另一种是强类型.由于强大的编译时检查,大多数人推荐后者.
在动态Web应用程序中,当需要将多个实体从控制器传递到视图时,我们遇到了各种情况.在这种情况下,可以将单个实体作为模型传递并放在ViewBag字典中.或者,可以创建一个全新的ViewModel类,合并各种实体,然后将其传递给视图.
最近,我遇到了这样的问题; 我需要传递一个类别模型,其中包含子类别列表和作为属性注册的产品.然后在视图中,我需要显示子类别,同时确保在产品集合中出现分页(如果它们大于10).因此,我无法对类别模型或产品模型使用强类型视图.
该解决方案由后续的同行,呈现tvanfosson和UfukHacıoğulları(非常感谢两者)在这个帖子.那就是使用ViewModel.我仍然试图理解并研究它,它似乎是正确的解决方案.
问题:这是处理此类情况的更好方法吗?此外,何时建议使用ViewModel以及何时绕过它以支持ViewBag和模型.
在MVC3应用程序中,我有一个具有奇怪行为的实体:"创建"操作正常,但"编辑"操作失败:在提交时,我获取所有字段为空的模型.
我搜索了关于这个错误的建议,似乎ViewModel可能是原因,但我看不出我的任何问题.正如我之前所说,创作工作正常!
请帮帮忙,谢谢!
模型:
public partial class tblEmployeur
{
[Required(ErrorMessageResourceType = typeof(EmployeurResources), ErrorMessageResourceName = "RequiredUserIDMessage")]
[Display(ResourceType = typeof(EmployeurResources), Name = "UserIDDisplay")]
public System.Guid userID { get; set; }
[Required(ErrorMessageResourceType = typeof(EmployeurResources), ErrorMessageResourceName = "RequiredNomMessage")]
[Display(ResourceType = typeof(EmployeurResources), Name = "NomDisplay")]
public string nom { get; set; }
[Required(ErrorMessageResourceType = typeof(EmployeurResources), ErrorMessageResourceName = "RequiredTypeSocMessage")]
[Display(ResourceType = typeof(EmployeurResources), Name = "TypeSocDisplay")]
public string type_soc { get; set; }
[Required(ErrorMessageResourceType = typeof(EmployeurResources), ErrorMessageResourceName = "RequiredCodeRCMessage")]
[Display(ResourceType = typeof(EmployeurResources), Name = "CodeRCDisplay")]
public string …Run Code Online (Sandbox Code Playgroud) 我正在使用viewmodel(vm)创建一个新的葡萄酒.我根据用户的配置文件将ProducerID值分配给get上的vm.在视图中呈现时,我可以在视图中看到ProducerID值.除非用户处于管理员角色(我没有使用该角色进行测试),否则用户无法选择或编辑此值.我的问题是ProducerID总是在POST上返回0.我不知道我错过了什么,因为我在视图中的其他选定选项回来了.
我试图在vm本身中添加一个新的唯一名称,但这也没有值.我环顾四周,找到了其他一些有类似问题的人,但他们的解决方案都没有帮助.对此的任何帮助都会很棒.谢谢!
视图模型:
{
public Wine Wine { get; set; }
public VOAVIRequest VOAVIRequest { get; set; }
public bool IsRequest { get; set; }
public SelectList VarTypes { get; set; }
public SelectList Origins { get; set; }
public SelectList Apps { get; set; }
public SelectList Vintages { get; set; }
public SelectList Importers { get; set; }
public NewWineViewModel()
{
this.Wine = new Wine();
}
}
Run Code Online (Sandbox Code Playgroud)
葡萄酒型号:
public class Wine :Updater
{
public int WineID { get; …Run Code Online (Sandbox Code Playgroud) 我正在使用MVC 3和View Model,在我的例子中我有一个View Model,它应该显示一个项目列表,还有一个用于插入一些输入的表单.
我的视图中存在问题,因为我无法将表格与视图模型相关联,您能告诉我我做错了什么吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using TestGuestBook.Models;
namespace TestGuestBook.ViewModel
{
public class ListAddCommentsViewModel
{
public int CommentId { get; set; }
[Required]
public string Nominative { get; set; }
[Email]
public string Email { get; set; }
[Required]
public string Content { get; set; }
public List<Comment> CommentItems { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
视图
@model IEnumerable<TestGuestBook.ViewModel.ListAddCommentsViewModel>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>ListAddCommentsViewModel</legend>
<div …Run Code Online (Sandbox Code Playgroud) 我的ASP MVC3视图模型在Edit方法加载此特定页面时工作正常,但是当用户点击保存并进行回发时,两个集合对象(List<T>)中包含的所有信息都将丢失.有任何想法吗?
这是视图中的代码.这会正确加载所有代理信息(ID和状态代码)
@for (int i = 0; i < Model.Fixed.Count; i++)
{
if(!String.IsNullOrWhiteSpace(Model.Fixed[i].AgentId))
{
fixedRow++;
if (fixedRow > 2)
{
var rowId = "row" + fixedRow.ToString() + "F";
<tr id=rowId class="noSee">
<td>
@Html.DropDownListFor(model => model.Fixed[i].StateCode,
(SelectList)ViewBag.StateCodeList, Model.Fixed[i].StateCode)
</td>
<td>
@Html.EditorFor(model => model.Fixed[i].AgentId)
@Html.ValidationMessageFor(model => model.Fixed[i].AgentId)
</td>
@if(fixedRow > 1)
{
var send = "MoreFixed(" + (fixedRow + 1).ToString() + ");";
var dataId = "plus" + fixedRow.ToString() + "F;";
<td id=@dataId class="more" onclick=@send>+</td>
}
</tr>
}
else
{ …Run Code Online (Sandbox Code Playgroud) 我有两个选项卡绑定到一个选项卡,viewmodel其中包含一个PlotModelof oxyplot和通过a选择的视图模型DataTemplate。单击第一个选项卡时,viewmodel绑定正确,但切换到标题抛出异常中定义的异常上方的第二个选项卡时。在两个选项卡中,所有控件均相同。是否可以将一个对象绑定到两个控件?
我不明白为什么这么简单的事情会让我这么麻烦,但仍然如此.我有这个转换器:
public class BoolToVisibleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is bool && (bool)value)
return Visibility.Visible;
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return (value is Visibility && (Visibility)value == Visibility.Visible);
}
}
Run Code Online (Sandbox Code Playgroud)
这个视图模型:
public class LoginViewModel: INotifyPropertyChanged
{
private bool isHowToVisibile;
public bool IsHowToVisible
{
get { return isHowToVisibile; }
set { isHowToVisibile = value; Notify(nameof(IsHowToVisible)); }
}
public event PropertyChangedEventHandler PropertyChanged; …Run Code Online (Sandbox Code Playgroud)