Передайте дополнительный параметр, который не является частью модели, в контроллер - PullRequest
0 голосов
/ 08 марта 2019

У меня есть код ниже, который показывает мою страницу Create cshtml и подключенный к ней контроллер.

Работает нормально, однако теперь мне нужно добавить еще одно поле в форму, которого нет в GameManagement.Gameмодель.

Это поле называется "CreatorUserId" и не существует в используемой модели.

Но я получаю значение этого поля, а затем передаю его вконтроллер, когда он не является частью модели?

Спасибо!

Create.cshtml:

@model GameManagement.Game


<div>
    <div>
        <form asp-action="Create">
            <div>
                <label asp-for="Id"></label>
                <input asp-for="Id" />
            </div>
            <div>
                <label asp-for="Description"></label>
                <input asp-for="Description" />
            </div>
            <div>
                <label asp-for="DisplayName"></label>
                <input asp-for="DisplayName" />
            </div>
            <div>
                <label>Creator User ID</label>
                <input id="CreatorUserId" />
            <div>
                <input type="submit" value="Create" />
            </div>
        </form>
    </div>
</div>

Контроллер:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Description,DisplayName")] Game newGame)
{

     // code to send the form information (Id, Description, DisplayName) to a 3rd party API

     apiResult = await apiClient.createNewGame(
        newGame.Id,
        newGame.Description,
        newGame.DisplayName,
        // CreatorUserId ??  not in Game model....

     return View(apiResult);
}

1 Ответ

1 голос
/ 11 марта 2019

Как подсказывает @ johnluke.laue, лучшее решение - создать новую модель представления, включающую необходимые свойства.

Если вы настаиваете на том, чтобы не создавать новую модель представления, то в качестве обходного пути можно добавить атрибут name:

<input id="CreatorUserId" name="CreatorUserId" />

и получить значение на стороне сервера, например:

public async Task<IActionResult> Create([Bind("Id,Description,DisplayName")] Game newGame, string CreatorUserId)
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...