繁体   English   中英

将布尔从视图/ ActionLink返回到方法-Asp.Net MVC

[英]Return bool from view/ActionLink to method - Asp.Net MVC

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

我的方法Like签名接受一个Guid Id和一个bool参数。

我能以某种方式通过bool:

   @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!");
            }

任何想法如何将布尔值从视图传递到控制器?

您通过传递模型ID的方式传递布尔值:

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

最终, Model.Id没什么特别的。 这只是一个Guid 传入的值不必特别来自任何地方。 随便传。

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

例如,如果您的数据库中有此模型:

     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。 这样,您就可以通过视图并获取任何其他信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM