C# 将id参数传递给控制器';s使用viewbag在内部创建操作
在我的模型中,用户和类主题之间有一对多的关系。这两个类的代码是C# 将id参数传递给控制器';s使用viewbag在内部创建操作,c#,asp.net-mvc,C#,Asp.net Mvc,在我的模型中,用户和类主题之间有一对多的关系。这两个类的代码是 public class Topic { public int TopicID { get; set; } public int UserID { get; set; } public virtual User User { get; set; } [Display(Name="Topic Subject")] public string TopicSubject { get; set; }
public class Topic
{
public int TopicID { get; set; }
public int UserID { get; set; }
public virtual User User { get; set; }
[Display(Name="Topic Subject")]
public string TopicSubject { get; set; }
[Display(Name="Date")]
[DataType(DataType.Date)]
public DateTime TopicDate { get; set; }
[DisplayName("Name")]
public int CatagoryID { get; set; }
[DisplayName("FullName")]
public virtual Catagory Catagories { get; set; }
public virtual ICollection<Reply> Replies { get; set; }
}
但是,当我尝试在浏览器中访问主题/创建时,会出现类似这样的错误,这会困扰我:
您的创建方法是HttpGet版本-这意味着,为什么要传递尚未创建的对象的id以“创建”对象?对于create来说,这个应该是空的,HttpPost应该传回模型,这样才能创建它
尝试查看创建mvc示例:要使控制器正常工作,您需要在查询参数中传递id。所以你需要使用下面的url 如果希望id是可选的,则需要更改操作方法,如下所示
public ActionResult Create(int? id)
{
ViewBag.CatagoryID = id;
ViewBag.UserID = id;
return View();
}
上面会告诉我们C#id参数是可选的,MVC不希望它出现在查询参数中
希望这有帮助 试试本地主机:63952/Create/5 5指在函数Create中传递的id
您可以尝试任何数字,因为错误表明您没有将id从链接传递到该页面,因此它将起作用。如果你不知道如何做到这一点,我建议你学习“mvc入门”教程。
public ActionResult Create(int id)
{
ViewBag.CatagoryID = id;
ViewBag.UserID = id;
return View();
}
public ActionResult Create(int? id)
{
ViewBag.CatagoryID = id;
ViewBag.UserID = id;
return View();
}