【问题标题】:How to pass a value to controller on submit ? mvc with razor如何在提交时将值传递给控制器​​?带剃须刀的 mvc
【发布时间】:2014-07-02 19:10:56
【问题描述】:

我创建了一个模型,我正在尝试构建类似当我单击提交按钮时值应该传递给控制器​​的东西,看起来像

[HttpPost]
// i am getting checked property but not phoneno to controller 
public ActionResult Confirm(Entity s) 
{
    return view();    
}

我的观点

@model MvcApplication3.Models.Entity

@using ( Html.BeginForm("Confirm", "Home", FormMethod.Post))
{
   @Html.CheckBoxFor(m=>m.checkedprop,
      new 
      { 
          @class = "myCheckBox", 
          phoneno= "1234"    //tried different ways none looks working for me 
      })

   <input type="submit" id="ConfirmButton"   />
}

型号

 public class Entity
 {
    public bool checkedprop { get; set; }
    public int phoneno { get; set; }
 }

【问题讨论】:

  • phoneno 没有呈现 HTML 控件。
  • 是的,它是真的。!但我不能创建一个单独的 html 控件来这样做。对此有任何建议。欢呼
  • 隐藏字段怎么样?
  • 不,伙计,我不应该使用任何我必须使用的@Html.CheckBoxFor
  • 顺便说一下,电话号码应该是字符串,而不是整数。如果数字以 0 开头怎么办?你会与他们相加或相除吗?如果您想查找某个区号中的所有电话号码(即以某些字符开头)等,该怎么办?

标签: asp.net-mvc razor


【解决方案1】:

你的标记

@Html.HiddenFor(m=>m.phoneno)

在你的控制器中你可以得到

[HttpPost]
public ActionResult Confirm(Entity s, string phoneno) 
{
  return view();    
}

【讨论】:

  • 请查看此链接,您可以获得一些我无法破解的东西。 stackoverflow.com/questions/9444805/… 。欢呼
  • 嗯,数据属性不包含在随表单发布的数据中。除了在您的情况下使用隐藏字段之外,您无法在控制器的操作中获取此值。当然,如果您想采用这种方法,您可以通过 jquery 获取数据属性值并通过 AJAX 发布表单。你可以看here
【解决方案2】:

改变

@Html.CheckBoxFor(m=>m.checkedprop,new { 
        @class = "myCheckBox", 
        phoneno= "1234"    //tried different ways none looks working for me 
    })

@Html.CheckBoxFor(m=>m.checkedprop,new {@class = "myCheckBox"})
@{Model.phoneno = 1234}
@Html.HiddenFor(m => m.phoneno)

您的不起作用的原因是您试图将电话号码设置为复选框的属性。您需要将该电话号码作为表单上的单独字段提交。由于它是硬编码的,并且用户没有输入它,而不是从文本框(或其他)提交,而是将其作为表单上的隐藏字段发送。

【讨论】:

  • 我不能使用隐藏字段。发送电话号码的任何备用方式在复选框内
  • 为什么不能使用隐藏字段?
  • 实际上我们可以,但我在想如何用我所拥有的东西来完成。
  • 如果您有一个值需要与表单一起提交,而用户没有输入,那么您就是这样做的。 for 的隐藏字段。现在,我假设您将电话号码从控制器传递给视图以填充表单?如果是这样,您可以取出@{Model.phoneno = "1234"}这一行。
  • 该链接显示将属性添加到复选框......这对您有什么帮助?在您的模型中,您有两个属性,一个 bool 和一个 int,对吗? int 是 bool 的属性吗?不,int 和 bool 是兄弟姐妹——同一个对象的两个孩子。因此,由于 phoneno 不是 checkeddownprop 的子项,因此将电话号码作为复选框的属性(这是 bool 的用户界面)是没有意义的。这就是您将它们作为两个单独的字段提交的原因。因为它们两个独立的字段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
相关资源
最近更新 更多