Моя проблема:
У меня есть два поля, и когда я вызываю свой метод @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();
}
Что я должен сделать для достижения этого (отправьте значения текстового поля)?
Вы пытались добавить имя контроллера в свою 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"/>
}}
С учетом сказанного, как правило, вы должны отправить эти значения обратно на сервер, а затем перенаправить на новый ActionMethod (таким образом, акроним PRG для сообщений, перенаправления, получения).