C# 具有两个参数的Action方法
我需要在action方法中有两个参数:一个用于文章id,另一个用于注释模型 我在文章中写了一个表单,上面有actionArticles/{id}/AddCommentC# 具有两个参数的Action方法,c#,asp.net-mvc,model-view-controller,asp.net-mvc-3,C#,Asp.net Mvc,Model View Controller,Asp.net Mvc 3,我需要在action方法中有两个参数:一个用于文章id,另一个用于注释模型 我在文章中写了一个表单,上面有actionArticles/{id}/AddComment routes.MapRoute( "Article_action", // Route name "Articles/{id}/{action}", // URL with parameters new { controller = "Arti
routes.MapRoute(
"Article_action", // Route name
"Articles/{id}/{action}", // URL with parameters
new { controller = "Articles" } // Parameter defaults
);
我的表格:
<form action="@Url.RouteUrl( new { controller = "Articles", id = article.article_id, action = "AddComment" })" method="post">
<input type="hidden" name="article_id" value="@article.article_id" />
<textarea name="comment" rows="6" cols="30"></textarea>
<input type="submit" />
</form>
我的行动方法:
[HttpPost]
public ActionResult DodajKomentarz( int id, ArticleViewModelResponse comment) {
//...
}
这里有一个问题。。。注释参数始终具有空值,但id是正确的。若我将类型ArticleViewModelResponse更改为FormCollection,那个么注释中包含所有变量
问题在哪里?为什么FormCollection有evethings而ArticleViewModelResponse没有
当然,这是唯一一个演示我的问题的例子,并不是我的全部代码。因此,请忽略每一个拼写错误。尝试创建一个视图模型类,如下所示
public class ArticleViewModelResponse {
public int article_id{set;get;}
public string comment{set;get;}
public int Id {get; set;}
}
[HttpPost]
public ActionResult DodajKomentarz( ArticleViewModelResponse comment)
{ //... }
现在,Id将成为视图模型类的一部分,该类将自动发送到控制器
谢谢,
-Naren在global.asax.cs文件中添加路由规则。看起来输入元素的名称错误,您需要在它们前面加上参数名称,请尝试以下操作:
<input type="hidden" name="comment.article_id" value="@article.article_id" />
<textarea name="comment.comment" rows="6" cols="30"></textarea>
您为此添加了路线吗?当然有规则。如果我没有添加规则,那么我的操作方法就不必启动了。还是一样的问题。也许我应该做点别的?
<input type="hidden" name="comment.article_id" value="@article.article_id" />
<textarea name="comment.comment" rows="6" cols="30"></textarea>