Свойство модели, привязанное к текстовому полю, всегда возвращает ноль

0

У меня есть свойство модели, связанное с текстовым полем для HTML-формы. Однако всякий раз, когда форма отправляется, свойство всегда имеет значение null, когда оно попадает в контроллер.

Я использовал ту же технику бесчисленное множество раз, но она просто не хочет играть в этом случае.

Это вызов от контроллера:

    public ActionResult ScanTubsetLabelToClose()
    {
        CloseTubsetVM viewModel = new CloseTubsetVM();

        return View(viewModel);
    }

Это viewmodel:

public class CloseTubsetVM
{
    public string ToClose { get; set; }
}

Вид:

@using PR3Transfer.Models.ViewModels;

@model CloseTubsetVM        

@using (Html.BeginForm("TubSetLabelToCloseScanned", "CloseTubset", new { closingBarcode = Model.ToClose, symbology = "KEY", }))
{            
    @Html.TextBoxFor(model => model.ToClose, new { @class = "scanTextbox", onkeypress = "posKeyPress(event)" })

    <div>
        <input class='hiddenButton' type="submit" value="Submit" />
    </div> 
}

И это метод целевого контроллера:

    public ActionResult TubSetLabelToCloseScanned(string closingBarcode, string symbology)
    {
        // ...
    }

Мое единственное предположение, что я ухожу с чем-то, когда я делаю то же самое в другом месте, которое здесь не работает, но что?

  • 1
    Почему вы не используете объект CloseTubsetVM качестве параметра для действия POST?
  • 0
    Мы не занимались MVC3 так долго, и мы пытались передавать модели представления между методами контроллера в первые дни, и это не работало, поэтому мы просто передали параметры или JSON с тех пор. Но вы совершенно правы - это работает здесь. Кстати, проблема с кодом, который я разместил, заключается в том, что имя свойства должно соответствовать имени параметра. Должно быть, это было то, что я просто сделал, не думая об этом в прошлом.
Теги:
asp.net-mvc-3

3 ответа

0
Лучший ответ

Из моего предыдущего комментария:

Имя свойства должно соответствовать имени параметра.

Итак, это скорректированный метод целевого контроллера:

    public ActionResult TubSetLabelToCloseScanned(string barcode, string symbology)
    {
        //...
    }

И это скорректированный взгляд:

@using PR3Transfer.Models.ViewModels;

@model CloseTubsetVM

@using (Html.BeginForm("TubSetLabelToCloseScanned", "CloseTubset", new { barcode = Model.Barcode, symbology = "KEY", }))
{            
    @Html.TextBoxFor(model => model.Barcode, new { @class = "scanTextbox", onkeypress = "posKeyPress(event)" })

    <div>
        <input class='hiddenButton' type="submit" value="Submit" />
    </div> 
}
0

Попробуй это

public ActionResult TubSetLabelToCloseScanned(string ToClose, string symbology)
    {
        // ...
    }   
0

Примите значение ToClose как параметр, и вы получите значение для свойства модели

public ActionResult TubSetLabelToCloseScanned(string closingBarcode, string symbology, string ToClose)
    {
        // ...
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню