2015-11-04 7 views
1

У меня есть этот метод proccess «создать» форму в asp.net:как обрабатывать скрытые значения в метод создания

public ActionResult Create([Bind(Include = "question_id, feedback_id")] feedback_questions feedback_questions) 

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

Моя форма:

@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>feedback_questions</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.question_id, "choose question: ", htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownList("question_id", null, htmlAttributes: new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.question_id, "", new { @class = "text-danger" }) 
      </div> 
     </div> 
     <div class="form-group"> 
      @Html.LabelFor(model => model.feedback_id, "", htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       // here I want hidden attribute for feedback_id, which will have value @ViewBag.feedback_id 
       @Html.ValidationMessageFor(model => model.question_id, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
} 

Как я могу это сделать?

+1

Почему вы используете сумку для просмотра, если свойство находится на вашей модели? – JamieD77

+0

Просто установите значение 'feedback_id' в контроллере, прежде чем передать модель в представление (не в' ViewBag') и используйте '@ Html.HiddenFor (m => m.feedback_id)' в представлении. Обратите внимание, что это также бессмысленно для объявления метки для скрытого ввода, так как генерирует 'ValidationMessageFor()' (скрытые входы не проверяются по умолчанию) –

ответ

0

Вы можете использовать Html.Hidden("feedback_id", @ViewBag.feedback_id) где feedback_id - это имя скрытого ввода, которое должно соответствовать имени объекта, к которому вы привязываетесь.

1

Может feedback_id это передается на вид из другого вида или макета, но так как это на вашей модели, то почему бы не просто передать его в Создать взгляд на Получить действия

public ActionResult Create() 
{ 
    return View(new feedback_questions() { feedback_id = ?? }); 
} 

[HttpPost] 
public ActionResult Create([Bind(Include = "question_id, feedback_id")] feedback_questions feedback_questions) 
{ 
    return View(feedback_questions);  
} 

, то вы можете просто используйте помощник HiddenFor

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    @Html.HiddenFor(model => model.feedback_id) 
    <div class="form-horizontal"> 
     <h4>feedback_questions</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.question_id, "choose question: ", htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownList("question_id", null, htmlAttributes: new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.question_id, "", new { @class = "text-danger" }) 
      </div> 
     </div> 
     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
}