#c# #asp.net-mvc #boolean
#c# #asp.net-mvc #логическое
Вопрос:
Я должен передать bool внутри -> "@Html.ActionLink(" ", "Like", new { id = Model.Id @*, Pass bool value here *@}".
Мой метод, такой как signature, принимает a Guid Id
и a bool
в параметре.
Я попытался со следующим:
bool passBool = true;
@Html.ActionLink("Like!", "Like", new { id = Model.Id, passBool}
@Html.ActionLink("Disike!", "Like", new { id = Model.Id, passBool = false}
Но я получаю его как null.
public ActionResult Like(Guid id, bool? getBool) //gets null error without '?'
{
if (getBool == true){
return Content("Liked!");
}else if (getBool == false){
return Content("Disiked!");
}
Я также безуспешно пытался исправить это с помощью модели представления:
var liked = new Test.ViewModel.LikeViewModel {LikeDislike = true};
@Html.ActionLink("Like!", "Like", new { id = Model.Id, liked}
Но это не работает, поскольку эти значения bool по-прежнему равны нулю, когда я их передаю. Есть идеи, как передать значение bool из представления в контроллер?
Ответ №1:
Вам нужно назвать передаваемый параметр так, чтобы он соответствовал действию вашего контроллера:
@Html.ActionLink("Like!", "Like", new { id = Model.Id,getBool= passBool}
Комментарии:
1. О, я забыл упомянуть, я не использую ViewModel внутри этого представления. Модель, которую я использую, не имеет свойства bool. Вот почему я попытался решить эту проблему, позаимствовав ViewModel через
var liked = new Test.ViewModel.LikeViewModel {LikeDislike = true};
. Есть ли какой-нибудь способ обойти это?2. Я смущен тем, что вы подразумеваете под заимствованным. Кроме того, я не рекомендую использовать HttpGet (что вы и делаете) для выполнения таких действий, как нравится / не нравится. Вы должны создать форму и опубликовать такое значение. В противном случае веб-сканер или автоматизированный инструмент могут перейти по вашей ссылке и «лайкать» вещи, не имея в виду.