将bool从view / ActionLink返回到方法 - Asp.Net MVC

时间:2016-10-05 19:47:52

标签: c# asp.net-mvc razor

我要在里面传递一个bool - > "@Html.ActionLink(" ", "Like", new { id = Model.Id @*, Pass bool value here *@}".我的模型不包含bool属性,也不能添加它(数据库优先)或用ViewModel替换模型。是否仍然可以以某种方式将bool值传递给我的方法?

我的方法与签名一样,参数中包含Guid Idbool

我可以以某种方式通过布尔:

   @Html.ActionLink("Like!", "Like", new { id = Model.Id, @* true bool*@}
   @Html.ActionLink("Disike!", "Like", new { id = Model.Id, @*false bool*@}

要:

 public ActionResult Like(Guid id, bool getBool) 
        {
            if (getBool == true){    

                return Content("Liked!");

            }else if (getBool == false){    

                return Content("Disiked!");
            }

知道如何将bool值从视图传递给控制器​​吗?

2 个答案:

答案 0 :(得分:2)

您传递bool的方式与传递模型ID相同:

@Html.ActionLink("Like!",   "Like", new { id = Model.Id, getBool = true})
@Html.ActionLink("Disike!", "Like", new { id = Model.Id, getBool = false})

最终Model.Id没有什么特别之处。这只是一个Guid。传入的值不必来自任何地方。只要传递任何东西。

答案 1 :(得分:0)

没有这样的事情“我无法用ViewModel替换模型”。 这就是ViewModel的想法,即创建一个与数据库模型不同的模型,并且符合视图要求。

e.g。如果您的数据库中有此模型:

     public  class Person
    {
       public int PersonID { get; set;}
       public string Name { get; set;}
       public string password { get; set;}
    }

并且您希望在视图中验证您不需要在模型中验证密码的密码,这是您在ViewModel类中执行的操作:

public class PersonVM :Person
{
       public string verifyPassword { get; set;}
} 

请注意,并非总是如此,您将继承VM中的原始模型。

创建VM后,您将创建一个视图,该视图的模型是您为视图创建的VM。这样您就可以通过视图传递并获取任何其他信息。