none
强类型的web页面,请问为什么不能在Html.BeginForm里面写传递参数? RRS feed

  • 问题

  • @model Models.RouterRegisterRecord
    @using (Html.BeginForm("TerminalRegisterDelete", "Terminal", FormMethod.Post ,new { id = Model.id }))
    {
     <input type="submit" value="删除" class="btn btn-default" onclick = "return confirm('确认删除?')"  />
    }

    在控制器里面使用

    string v_id = Request.QueryString["id"];

    取不到参数,只能用强类型的方式来取参数,

     public ActionResult TerminalRegisterDelete(RouterRegisterRecord rrr)

    不知是何原因?

    2017年4月11日 7:05

答案

  • 你好,

    我建议你去查看一下Html.BeginForm的构造函数,根据你的代码,你是在添加html attribute, 而不是参数。

    你可以使用下边的代码添加参数:

    @using (Html.BeginForm("Index2", "Home", new { id = "AAA" }, FormMethod.Post))
    {

    在控制器中你可以使用以下代码来获取id的值:

    [HttpPost] public ActionResult Index2(string id) {

    string v_id = id;

    //使用下边的代码获取不到id的值,你可以查看url: http://localhost:3085/Home/Index2/AAA

    //string str = Request.QueryString["id"]; //string str2 = Request.Form["id"];
    return View();

    }

    有关Html.BeginForm的详细内容,请参考: 

    https://msdn.microsoft.com/zh-cn/library/system.web.mvc.html.formextensions.beginform(v=vs.118).aspx 



    2017年4月12日 8:46
    版主
  • 谢谢你的回复,看了说明应该是html属性

    参数还是要在页面里面使用TextBox展示以后,才能被控制器读取

    • 已标记为答案 尺蠖 2017年4月18日 3:12
    2017年4月18日 3:12

全部回复