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

1

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

У меня есть два поля, и когда я вызываю свой метод @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();
        }

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

Теги:
asp.net-mvc
html-helper
html.actionlink

2 ответа

1

Вы пытались добавить имя контроллера в свою actionLink?

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

Без использования 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"/>

}}

С учетом сказанного, как правило, вы должны отправить эти значения обратно на сервер, а затем перенаправить на новый ActionMethod (таким образом, акроним PRG для сообщений, перенаправления, получения).

  • 0
    Но у меня есть другая кнопка на той же странице, которая публикует другую информацию: / У вас есть пример, чтобы сделать это с помощью jquery?
  • 0
    @guisantogui - вы можете иметь несколько форм на одной странице ... не похоже, чтобы эти поля были захвачены в другой форме. Если это так, то почему бы вам не обработать всю эту информацию (создание навыков и все остальное, что происходит) одновременно?

Ещё вопросы

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