Передача значения со страницы в 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).