Asp.net Основные данные формы публикации при использовании нескольких моделей - PullRequest
0 голосов
/ 10 июня 2019

Редактировать Когда я хочу отправить form значение модели, покажите ноль в Action в ядре Asp.net 2.2. У меня ComplexViewModel содержит 2 Model, как это:

Комплекс ViewModel

public class CreateQuestionComplexModel
{
    public questionViewModel questionViewModel { get; set; }
    public IEnumerable<Group> GroupModel { get; set; }
}

Контроллер

    [HttpGet]
    public IActionResult CreateQuestion(CreateQuestionComplexModel model)
    {
       return View(model);
    }

    [HttpPost]
    public IActionResult CreateQuestion(CreateQuestionComplexModel model)
    {
     //model is null here
     //ModelState

    }

вот мой взгляд

@model porseman.Models.ComplexModel.CreateQuestionComplexModel

@Html.PartialAsync("SideBarMenu", Model.GroupModel)

     <form class="row" asp-Controller="Question" asp-Action="CreateQuestion" method= "post">
          <div class="form-group">
             <div class="col-xs-10">
                 <input asp-for="questionViewModel.Title" type="text" class="form-control" />
             </div>
             <label asp-for="questionViewModel.Title" class="control-label col-xs-2"></label>
          </div>

          <input type="button" value="submit" class="btn" />
     </form>

Теперь, когда я отправляю форму, все значения null в Action. После просмотра кодов я узнал, что все входные данные id получают префикс questionViewModel_Title и все входные данные name questionViewModel.Title. Теперь, как я могу опубликовать данные на Action или , как я могу удалить префикс?

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Я могу решить проблему с добавлением id вручную.

Попробуйте это

@model porseman.Models.ComplexModel.CreateQuestionComplexModel

@Html.PartialAsync("SideBarMenu", Model.GroupModel)

 <form class="row" asp-Controller="Question" asp-Action="CreateQuestion" method= "post">
      <div class="form-group">

         <div class="col-xs-10">
             <input asp-for="questionViewModel.Title" id="Title" type="text" class="form-control" />
         </div>

      </div>

      <input type="button" value="submit" class="btn" />
 </form>

Теперь id равно Title, а не questionViewModel_Title, и в контроллере вы можете получить значение данных формы.

0 голосов
/ 11 июня 2019

Попробуйте изменить свою модель на прописные, как это

public class CreateQuestionComplexModel
{
    public QuestionViewModel QuestionViewModel { get; set; }
    public IEnumerable<Group> GroupModel { get; set; }
}

А по вашему мнению

asp-for="QuestionViewModel.Title"

И, наконец, в вашем контроллере

[HttpPost]
public IActionResult CreateQuestion([FromBody] CreateQuestionComplexModel model)
{


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