我的ViewModel有一个属性,它是我的另一个模型实体的集合,在本例中是CategoryTags(并且每个标记都有一个Tag和一个ID).
1)我是否理解Html.EditorFor()没有可以为ICollection创建的UI?
2)假设#1,我决定创建一个EditorTemplate,这是一个文本框,我的用户可以键入以逗号分隔的标记名称,jquery将自动完成.我是否必须传回标签名称列表(或其各自的ID),然后在POST时将它们解析回CategoryTags propety?
谢谢!
我有一个ViewModel,它接受一些Model数据并略微改变它.
我这样做的方式"有效",因为我只是将其传递DomainModel给构造函数ViewModel,但由于我在一些一对一的ViewModel上使用AutoMapper,我想我会尝试学习如何做跨所有ViewModel的映射.
这是ViewModel的一个例子,它可以做一些额外的工作.
public class UsersDetailsViewModel
{
public string UserName { get; set; }
public string Email { get; set; }
public string Website { get; set; }
public int ID { get; set; }
public List<OpenID> OpenIds { get; set; }
public string UserAge { get; set; }
public string About { get; set; }
public string Slug { get; set; }
public System.DateTime LastSeen { get; set; }
public string Region { get; set; …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以使用Knockout.js的ko.applyBindings()多次不同的ViewModels绑定到页面的一个部分.例如,假设我有这个:
<div id="foo">...</div>
...
ko.applyBindings(new PageViewModel());
ko.applyBindings(new PartialViewModel(), $('#foo')[0]);
Run Code Online (Sandbox Code Playgroud)
我现在正在应用两个ViewModel绑定<div id="foo>.这合法吗?
我使用领域驱动n层应用程序体系结构与EF code first我在最近的项目中,我定义我的Repository合同,在Domain层.制定其他Repositories不那么冗长的基本合同:
public interface IRepository<TEntity, in TKey> where TEntity : class
{
TEntity GetById(TKey id);
void Create(TEntity entity);
void Update(TEntity entity);
void Delete(TEntity entity);
}
Run Code Online (Sandbox Code Playgroud)
并且Repositories每个都是专门的Aggregation root,例如:
public interface IOrderRepository : IRepository<Order, int>
{
IEnumerable<Order> FindAllOrders();
IEnumerable<Order> Find(string text);
//other methods that return Order aggregation root
}
Run Code Online (Sandbox Code Playgroud)
如您所见,所有这些方法都依赖于Domain entities.但在某些情况下,应用程序UI需要一些不是Entity数据的数据,这些数据可能来自两个或更多的肠炎数据View-Model,在这些情况下,我定义了View-Models in Application layer,因为它们非常依赖于Application's需求而不是到了 …
在NerdDinners示例之后,我有兴趣创建一个强类型的母版页.为了实现这一点,我使用一个基本控制器来检索母版页的数据.所有其他控制器都继承此类.同样,我有ViewModels主页和任何其他视图.视图ViewModel类继承自母版页ViewModel.
子控制器应该如何确保将母版页的数据传递给View而不设置ViewModel与母版页本身相关的属性?
我的母版页将显示一些按钮,这些按钮在XML文件中确定,因此Buttons我填充的类.
MasterPage ViewModel代码段
using System.Collections.Generic;
namespace Site1.Models
{
public class MasterViewModel
{
public List<Button> Buttons{set; get;}
}
}
Run Code Online (Sandbox Code Playgroud)
视图 ViewModel
namespace Site1.Models
{
public class View1ViewModel : MasterViewModel
{
public SomeDataClass SomeData { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
using System.Collections.Generic;
using System.Web.Mvc;
using Site1.Models;
namespace Site1.Controllers
{
public abstract class BaseController : Controller
{
protected MasterViewModel model = new MasterViewModel();
public BaseController()
{
model.Buttons …Run Code Online (Sandbox Code Playgroud) 在我的控制器中,我有一个ProductInfo来自我的域模型的类,我需要它的一些信息来填充我的视图模型 ProductStatsVM.
如何填充视图模型?我听说过三种可能的方法:
我知道有些像AutoMapper这样的工具,我确实会使用它,但之前我想了解如何在不使用任何其他工具的情况下从Controller中填充视图模型的逻辑.
关于如何在ASP.NET MVC中实现验证的大多数技巧似乎都围绕模型(在模型和控制器之间构建服务层或使用验证属性装饰模型的属性).
在我的应用程序中,我使用ViewModels进行控制器和视图之间的所有通信.
我的登录页面有一个名为"LoginViewModel"的ViewModel,其中包含一个名为"EmailAddress"的属性.
当用户输入其电子邮件地址并单击"提交"时,将填充此ViewModel并将其发送到控制器,在该控制器中验证电子邮件地址.
它必须是有效的电子邮件地址,并且用户必须来自在系统中注册的域.
为此添加验证的便捷方法是什么?我应该将验证放在ViewModel本身吗?还是应该留在控制器中?
我有一个View,它有2个子视图,ViewModel分配给每个视图:
ViewA - ViewModelA
{
ViewB - ViewModelB
ViewC - ViewModelC
}
Run Code Online (Sandbox Code Playgroud)
ViewB有一个文本框,ViewC有一个组合框,我需要从ViewModelA访问这两个组合框.不是GUI控件本身,而是绑定值,即文本框的.Text和ComboBox的.SelectedItem.目前我只将ViewModelB和ViewModelC作为ViewModelA的属性,但感觉不对.
视图模型在不破坏MVVM模式的情况下相互通信的标准方法是什么?
我是MVC和实体框架的新手,我有一个关于正确/首选方式的问题.
我一直在关注Nerd Dinner MVC应用程序,因为我正在编写这个应用程序.我有一个页面,其中包含来自几个不同地方的数据.它显示来自几个不同表的详细信息,并且还具有查找表中的下拉列表.
我创建了一个包含所有这些信息的ViewModel类:
class DetailsViewModel {
public List<Foo> DropdownListData { get; set; }
// comes from table 1
public string Property1 { get; set; }
public string Property2 { get; set; }
public Bar SomeBarObject { get; set; } // comes from table 2
}
Run Code Online (Sandbox Code Playgroud)
在Nerd Dinner代码中,他们的例子有点过于简单化了.DinnerFormViewModel采用单个实体:Dinner.根据晚餐,它根据晚餐地点为各国创建一个SelectList.
由于简单,它们的数据访问代码也非常简单.他有一个简单的DinnerRepository,其方法名为GetDinner().在他的行动方法中,他可以做一些简单的事情:
Dinner dinner = new Dinner();
// return the view model
return View(new DinnerFormViewModel(dinner));
Run Code Online (Sandbox Code Playgroud)
要么
Dinner dinner = repository.GetDinner(id);
return View(new DinnerFormViewModel(dinner));
Run Code Online (Sandbox Code Playgroud)
我的查询比这复杂得多,从多个表中提取...创建一个匿名类型:
var query = from a in ctx.Table1
where …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc entity-framework repository-pattern viewmodel
我在第一次选择语言后启动片段时获取此日志,即更改Locale以及第一次根据所选语言加载字符串资源.
E/cr_VariationsUtils: Failed reading seed file "/data/user/0/com.example.sample/app_webview/variations_seed_new": /data/user/0/com.example.sample/variations_seed_new (No such file or directory)
E/cr_VariationsUtils: Failed reading seed file "/data/user/0/com.example.sample/app_webview/variations_seed": /data/user/0/com.example.sample/app_webview/variations_seed (No such file or directory)
Run Code Online (Sandbox Code Playgroud) viewmodel ×10
c# ×4
asp.net-mvc ×3
mvvm ×2
android ×1
automapper ×1
controller ×1
editorfor ×1
fill ×1
knockout.js ×1
locale ×1
master-pages ×1
repository ×1
validation ×1
wpf ×1