小编Dar*_*Nik的帖子

如何将模型传递给局部视图

我有两个视图模型:

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.我做错了什么?

asp.net-mvc partial-views asp.net-mvc-viewmodel

33
推荐指数
2
解决办法
8万
查看次数

在父方法中返回子类 C#

我有父类:

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)

这种可能性还有其他模式吗?

c# oop

5
推荐指数
1
解决办法
2771
查看次数

将id从视图传递给控制器

其实我是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)

在控制器中,我传递CategoryIdCategoryName到视图:

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)

asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

3
推荐指数
1
解决办法
2万
查看次数