返回bool从视图/ActionLink到方法- Asp.净MVC

本文关键字:方法 Asp MVC ActionLink bool 视图 返回 | 更新日期: 2023-09-27 18:11:37

我必须在里面传递一个bool -> "@Html.ActionLink(" ", "Like", new { id = Model.Id @*, Pass bool value here *@}".我的模型不包含bool属性,也不能添加它(数据库第一)或用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!");
            }

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

返回bool从视图/ActionLink到方法- Asp.净MVC

你传递一个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。传入的值不必来自任何特定的地方。

没有这样的事情"我不能用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中继承原始模型。

创建虚拟机后,您创建一个视图,该视图的模型是您为该视图创建的虚拟机。通过这种方式,您可以通过视图传递和获取任何附加信息。