C# 具有两个参数的Action方法

C# 具有两个参数的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

我需要在action方法中有两个参数:一个用于文章id,另一个用于注释模型

我在文章中写了一个表单,上面有actionArticles/{id}/AddComment

        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>