Различные скрытые поля получают одинаковое значение в Asp. net C# Razor - PullRequest
1 голос
/ 24 января 2020

У меня есть действие, которое выглядит следующим образом:

public ActionResult NewPicture(int id)
{
    var response = service.Get(id);
    if (!response.Succeed)
       return Error(response.MainError.ErrorType);
    return ManagementView("/Gallery/EditPicture.cshtml", new PictureSaveViewModel() { Id = 0, GalleryId = id });
}

В PictureSaveViewModel GalleryId относится к родительской галерее, а Id - это идентификатор изображения. Поскольку это NewPicture действие, для Id установлено значение 0, а для GalleryId установлено значение id. В представлении у меня есть форма, которая содержит несколько входов для PictureSaveViewModel.

@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.GalleryId)

Вот два скрытых ввода для Id и GalleryId для указанной модели. Я ожидаю, что скрытый файл Значение Id будет равно 0, а значение GalleryId будет равно id параметра. Но когда я называю это действие /Gallery/NewPicture/82, значение обоих скрытых полей равно 82

<input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="Id" name="Id" type="hidden" value="82">
<input data-val="true" data-val-number="The field GalleryId must be a number." data-val-required="The GalleryId field is required." id="GalleryId" name="GalleryId" type="hidden" value="82">     

Я не знаю, что это происходит. Я событие попытался @Html.Hidden("Id" ,@Model.Id), но все же результат. Другие входные поля, такие как title, description, ...., работают нормально.

1 Ответ

1 голос
/ 24 января 2020

В вашем запросе вы получаете параметр Id. Поэтому, когда вы передаете модель с этим именем, она автоматически использует данные идентификатора запроса. Поэтому, пожалуйста, попробуйте следующий код, измените параметр id на tid

 public ActionResult NewPicture(int tid)

    {
        var response = service.Get(tid);
        if (!response.Succeed)
           return Error(response.MainError.ErrorType);
        return ManagementView("/Gallery/EditPicture.cshtml", new PictureSaveViewModel() { Id = 0, GalleryId = tid });
    }
...