C# 无法从';System.Web.Mvc.FormCollection';至';MyProject.Models.EditViewModel';
我在ASP.NET MVC 3项目中遇到以下两个错误: 错误1与的最佳重载方法匹配 'SklepAlfa.Models.ProduktyController.Edytuj(int, SklepAlfa.Models.ProduktyEdytujViewModel)“”具有一些无效参数 错误2参数2:无法从转换 “System.Web.Mvc.FormCollection”到 'sklepafa.Models.ProduktyEdytujViewModel' 这是我的ProduktyEdytujViewModel.cs:C# 无法从';System.Web.Mvc.FormCollection';至';MyProject.Models.EditViewModel';,c#,asp.net-mvc-3,model,edit,C#,Asp.net Mvc 3,Model,Edit,我在ASP.NET MVC 3项目中遇到以下两个错误: 错误1与的最佳重载方法匹配 'SklepAlfa.Models.ProduktyController.Edytuj(int, SklepAlfa.Models.ProduktyEdytujViewModel)“”具有一些无效参数 错误2参数2:无法从转换 “System.Web.Mvc.FormCollection”到 'sklepafa.Models.ProduktyEdytujViewModel' 这是我的ProduktyEdytujV
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; }
}
}
我做错了什么?提前谢谢。在post操作中,您可以只传递模型对象,它将包含
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");
}
这是有道理的!但不幸的是,如果我从HttpPost中删除int-id,我会得到一个错误,方法“Edytuj”的重载不包含两个参数。请检查
路由
表,并确保将id
定义为urlparmeter。可选的我检查了它,默认情况下是这样的。您使用的asp.net mvc
的哪个版本?我认为不是版本3或者您的视图不是强类型视图?再次您好,我已经找到了“方法'Edytuj'没有重载需要2个参数”问题的原因-我已经删除了在创建项目时附加的测试模块。现在应用程序正常启动,感谢您的建议,它可以正常工作:)。非常感谢你。
[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");
}