无法从“System.Web.Mvc.FormCollection”转换到“MyProject.Models.EditViewModel”

发布于 2024-11-26 22:12:14 字数 1547 浏览 0 评论 0原文

我在 ASP.NET MVC 3 项目中遇到以下两个错误:

错误 1 ​​最佳重载方法匹配 'SklepAlfa.Models.ProduktyController.Edytuj(int, SklepAlfa.Models.ProduktyEdytujViewModel)' 有一些无效参数

错误 2 参数 2:无法从 'System.Web.Mvc.FormCollection' 到 'SklepAlfa.Models.ProduktyEdytujViewModel'

这是我的 ProduktyEdytujViewModel.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using SklepAlfa.Models;
using System.Web.Mvc;

namespace SklepAlfa.Models
{
    public class ProduktyEdytujViewModel
    {
        public Produkty Produkt { get; set; }
        public int id_produktu { get; set; }
        public IEnumerable<Kategorie_produktow> Kategorie { get; set; }
    }
}

这里它在我的控制器中使用:

    public ActionResult Edytuj(int id) //Edit
    {
        var model = new ProduktyEdytujViewModel //ProductsEditViewModel
        {
            Produkt = sklepBaza.PobierzProduktWgId(id), //GetProductById
            Kategorie = sklepBaza.PobierzKategorieProduktow() //GetProductCategories
        };

        return View(model);
    }

    [HttpPost]
    public ActionResult Edytuj(int id, ProduktyEdytujViewModel model) 
    {
        if (!ModelState.IsValid)
        {
            model.Produkt = sklepBaza.PobierzProduktWgId(id); 
            model.Kategorie = sklepBaza.PobierzKategorieProduktow(); 
            return View(model);
        }
        return RedirectToAction("Kategorie");
    }

我做错了什么?先感谢您。

I get two following errors in my ASP.NET MVC 3 project:

Error 1 The best overloaded method match for
'SklepAlfa.Models.ProduktyController.Edytuj(int,
SklepAlfa.Models.ProduktyEdytujViewModel)' has some invalid arguments

Error 2 Argument 2: cannot convert from
'System.Web.Mvc.FormCollection' to
'SklepAlfa.Models.ProduktyEdytujViewModel'

Here is my ProduktyEdytujViewModel.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using SklepAlfa.Models;
using System.Web.Mvc;

namespace SklepAlfa.Models
{
    public class ProduktyEdytujViewModel
    {
        public Produkty Produkt { get; set; }
        public int id_produktu { get; set; }
        public IEnumerable<Kategorie_produktow> Kategorie { get; set; }
    }
}

And here it is used in my controller:

    public ActionResult Edytuj(int id) //Edit
    {
        var model = new ProduktyEdytujViewModel //ProductsEditViewModel
        {
            Produkt = sklepBaza.PobierzProduktWgId(id), //GetProductById
            Kategorie = sklepBaza.PobierzKategorieProduktow() //GetProductCategories
        };

        return View(model);
    }

    [HttpPost]
    public ActionResult Edytuj(int id, ProduktyEdytujViewModel model) 
    {
        if (!ModelState.IsValid)
        {
            model.Produkt = sklepBaza.PobierzProduktWgId(id); 
            model.Kategorie = sklepBaza.PobierzKategorieProduktow(); 
            return View(model);
        }
        return RedirectToAction("Kategorie");
    }

What am I doing wrong? Thank you in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只是偏爱你 2024-12-03 22:12:14

在后操作中,您可以仅传递模型对象,它将包含 id

[HttpPost]
public ActionResult Edytuj(ProduktyEdytujViewModel model) 
{
    if (!ModelState.IsValid)
    {
        model.Produkt = sklepBaza.PobierzProduktWgId(model.id); 
        model.Kategorie = sklepBaza.PobierzKategorieProduktow(); 
        return View(model);
    }
    return RedirectToAction("Kategorie");
}

In the post action you can pass just the model object and it will contain the id

[HttpPost]
public ActionResult Edytuj(ProduktyEdytujViewModel model) 
{
    if (!ModelState.IsValid)
    {
        model.Produkt = sklepBaza.PobierzProduktWgId(model.id); 
        model.Kategorie = sklepBaza.PobierzKategorieProduktow(); 
        return View(model);
    }
    return RedirectToAction("Kategorie");
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文