我有两个视图模型:
public class ParentViewModel
{
public Id { get; set; }
.....
public ChildViewModel Child{ get; set; }
}
public class ChildViewModel
{
public ChildId { get; set; }
.....
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult Index()
{
.... <some code>
return View("NewIndex", ParentViewModel);
}
[HttpPost]
public ActionResult PartialAction(ChildViewModel childView)
{
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
和观点:指数
@model ParentViewModel
....
@Html.Partial("_Partial", Model.Child)
Run Code Online (Sandbox Code Playgroud)
和_Partial
@model ChildViewModel
... do some stuff with child model
Run Code Online (Sandbox Code Playgroud)
当我试图打开索引页面时,我遇到了错误:
传递到字典中的模型项的类型为"ParentViewModel",但此字典需要"ChildViewModel"类型的模型项.
为什么它尝试传递ParentViewModel而不是ChildViewModel.我做错了什么?
我有父类:
public abstract class ParentClass
{
public ParentClass ParentMethod() { ... }
}
Run Code Online (Sandbox Code Playgroud)
我还有两个孩子:
public class ChildA : ParentClass
{
public ChildA ChildAMethod1()
{
...
return this;
}
public ChildA ChildAMethod2()
{
...
return this;
}
}
public class ChildB : ParentClass
{
public ChildB ChildBMethod() { ...
return this; }
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我可以这样写:
new ChildA().ChildAMethod1().ChildAMethod2();
Run Code Online (Sandbox Code Playgroud)
但是如何实现这样写的可能性:
new ChildA().ParentMethod().ChildAMethod1().ChildAMethod2();
new ChildB().ParentMethod().ChildBMethod1();
Run Code Online (Sandbox Code Playgroud)
这种可能性还有其他模式吗?
其实我是MVC的初学者.简单的问题:
例如,我有类别页面的ViewModel:
public class CategoryViewModel
{
public int ProductId {get;set;}
public int CategoryId {get;set;}
public string ProductName {get;set;}
public string CategoryName {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
在控制器中,我传递CategoryId和CategoryName到视图:
public ActionResult Index()
{
CategoryViewModel categoryViewModel = new CategoryViewModel();
categoryViewModel.CategoryId = catId; \\Get from DB
categoryViewModel.CategoryName = catName; \\Get from DB
return View("Category", categoryViewModel);
}
Run Code Online (Sandbox Code Playgroud)
然后在视图上我需要将产品添加到此类别:
<form action=@Url.Action("AddProduct", "Category") method="POST" enctype = "multipart/form-data">
<textarea name ="ProductName"></textarea>
<input type="submit" value="Add"/>
</form>
Run Code Online (Sandbox Code Playgroud)
在AddProduct的控制器中:
[HttPost]
public ActionResult AddPost(CategoryViewModel categoryViewModel)
{
var productName = categoryViewModel.ProductName;
var …Run Code Online (Sandbox Code Playgroud)