Передача значения со страницы в Html.ActionLink

Моя проблема:

У меня есть два поля, и когда я вызываю мой метод @Html.Actionlink, он отправляет нулевое значение для этих двух параметров.

Это код моей страницы:

            <div id="new-skill" class="row">
                <label for="Description">Descreva brevemente a sua habilidade:</label>
                @Html.TextBoxFor(model => model.skill.Description, new { @class = "form-control" })

                <label for="Name">Em qual categoria ela está?</label>
                @Html.TextBoxFor(model => model.skill.Category.Name, new { @class = "form-control" })

                <div class="text-center margin-top15">

                    @Html.ActionLink("Adicionar nova habilidade", "InsertNewSkill", new
                                                                                   {
                                                                                       professionalId = ViewBag.professionalId,
                                                                                       skillDescription = "Test Text",
                                                                                       categoryName = Model.skill.Category.Name
                                                                                       }, new 
                                                                                       { 
                                                                                           @class = ""
                                                                                       })
                    </div>

                </div>

Это мой метод InsertNewSkill:

        public ActionResult InsertNewSkill(int professionalId, string skillDescription, string categoryName)
        {
            initBusinessObjects();

            var professional = professionalBusiness.GetById(professionalId);
            var newSkill = new SkillModel { Description = skillDescription, Category = new SkillCategoryModel { Name = categoryName } };

            skillBusiness.Insert(newSkill);
            professional.Skills.Add(newSkill);

            professionalBusiness.Update(professional);

            return View();
        }

Что я должен сделать, чтобы достичь этого (отправить значения текстового поля)?

2 ответа

Вы пытались добавить controllerName к своей ссылке ActionLink?

 @Html.ActionLink("Adicionar nova habilidade", "InsertNewSkill","CONTROLLER_NAME", new
             {
              professionalId = ViewBag.professionalId,
              skillDescription = "Test Text",
              categoryName = Model.skill.Category.Name
               }, new 
               { 
               @class = ""
               })

Не используя jQuery / javascript, вы должны использовать форму для возврата этих значений на сервер.

@{using(Html.BeginForm("InsertNewSkill", "ControllerName", FormMethod.Get)){
   <div id="new-skill" class="row">
   <label for="Description">Descreva brevemente a sua habilidade:</label>
   @Html.TextBoxFor(model => model.skill.Description, new { @class = "form-control" })

   <label for="Name">Em qual categoria ela está?</label>
   @Html.TextBoxFor(model => model.skill.Category.Name, new { @class = "form-control" })

   @Html.Hidden("professionalId", ViewBag.professionalId)

   <div class="text-center margin-top15">
         <input type="submit" value="Adicionar nova habilidade"/>

}}

При этом, как правило, вы должны POST эти значения обратно на сервер, а затем перенаправить на новый ActionMethod (Таким образом, аббревиатура PRG для Post, Redirect, Get).

Другие вопросы по тегам