【问题标题】:HOw to access the hidden value set in cshtml from controller?如何从控制器访问 cshtml 中设置的隐藏值?
【发布时间】:2011-09-22 09:11:53
【问题描述】:

我的cshtml中可以有这样的东西吗

@Html.hiddenfor(model => model.name , "passname")

在控制器中:

我想访问这个 modal.name,它将具有我设置的值,即“密码”

【问题讨论】:

  • 控制器中没有模型吗?你不能直接访问model.name吗?
  • 是的,但在我的页面中我没有名称输入字段,我只想将默认文本值传递给我的模式。这样做是为了确保该值仅来自页面跨度>
  • 你只需要像 Model.PropertyName 这样直接在你的控制器中调用,它是否隐藏真的没关系..
  • 所以你只需在视图中传递默认值并以相同的方式在控制器中使用它...

标签: .net asp.net asp.net-mvc-3


【解决方案1】:

两种方式:

1 - 您的模型必须具有可以传递给 HiddenFor 的此属性。例如

class PageModel{
   public string HiddenFieldValue{get;set;}
   public string Name {get;set;}
}

在cshtml中

@model PageModel
...
@Html.hiddenfor(model => model.name, model.HiddenFieldValue)

在控制器中

public ViewResult MyPage(){
    return View(new PageModel(){
        HiddenFieldValue = "Hello World!";
    });
}

第二种方式:通过ViewBag/ViewData传入。

在控制器中

public ViewResult MyPage(){
    ViewBag.HiddenFieldValue = "Hello World!";
    return View();
}

在cshtml中

@model PageModel
...
@Html.hiddenfor(model => model.name, ViewBag.HiddenFieldValue)

【讨论】:

  • 只是要评论:我将问题解释为控制器如何控制隐藏文本字段的值。如果这是错误的,那么请忽略此帖子:)
  • 好的。我的 javascript 中有一个变量,它是用我的 cshtml 编写的。我在发布页面时想要那个变量的值。那就是我想要我的控制器中的那个变量值。你能帮我吗
  • 将该变量放在隐藏字段中并将其发布到您的控制器。
【解决方案2】:

隐藏字段的值将与所有其他 POST 数据一起发送(如果您的表单使用 POST)。

所以你可以:

  1. 将属性“passname”添加到用于检索数据的模型中。
  2. 在处理帖子的操作上创建一个名为“passname”的参数。
  3. 将 FormCollection 添加到参数(在处理帖子的操作上),并从那里检索值。
  4. 使用 Request.Form["passname"] 或事件 Request["passname"] 从请求中获取它

    // Example 1
    
    public class MyModel {
       // other properties
    
       public string passname { get; set; }
    }
    
    public class MyController : Controller {
         [HttpPost]
         public ActionResult MyAction(MyModel data) {
         }
    }
    
    // Example 2
    
    public class MyController : Controller {
       [HttpPost]
       public ActionResult MyAction(string passname) {
       }
    }
    
    // Example 3
    
    public class MyController : Controller {
       [HttpPost]
       public ActionResult MyAction(FormCollection data) {
            var passname = data["passname"];
       }
    }
    
    // Example 4
    
    public class MyController : Controller {
       [HttpPost]
       public ActionResult MyAction() {
            var passname = Request.Form["passname"];
       }
    }
    

【讨论】:

  • 好的。我的 javascript 中有一个变量,它是用我的 cshtml 编写的。我在发布页面时想要那个变量的值。那就是我想要我的控制器中的那个变量值。你能帮我吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 2017-06-27
相关资源
最近更新 更多