Метод действия с двумя аргументами - PullRequest
0 голосов
/ 15 августа 2011

Мне нужно иметь два аргумента в методе действия: один для идентификатора статьи и второй с моделью комментария.

Я написал форму в статье, в которой есть действие Articles / {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>

Вот мой ArticleViewModelResponse:

public class ArticleViewModelResponse {
    public int article_id{set;get;}
    public string comment{set;get;}
}

Мой метод действия:

[HttpPost]
public ActionResult DodajKomentarz( int id, ArticleViewModelResponse comment) {
//...
}

Вот проблема ... Аргумент комментария всегда имеет нулевое значение, но идентификатор верен. И если я изменю тип ArticleViewModelResponse на FormCollection, тогда комментарий будет иметь все переменные.

Где проблема? Почему FormCollection имеет события, а ArticleViewModelResponse - нет?

P.S. Конечно, это только пример, демонстрирующий мою проблему, и это не весь мой код. Так что игнорируйте каждую опечатку.

Ответы [ 3 ]

1 голос
/ 15 августа 2011

Похоже, имена ваших входных элементов неверны, вам нужно добавить к имени параметра префикс, попробуйте это:

<input type="hidden" name="comment.article_id" value="@article.article_id" />
<textarea name="comment.comment" rows="6" cols="30"></textarea>
0 голосов
/ 15 августа 2011

Добавить правило маршрутизации в файл global.asax.cs.

0 голосов
/ 15 августа 2011

Попробуйте создать класс модели представления, как показано ниже.

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) 
  {   //...   } 

Теперь идентификатор будет частью класса модели представления, который будет автоматически отправляться на контроллер.

Спасибо, -Naren

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...