表单集合asp.net MVC中未发送隐藏字段



我有几个隐藏的表单字段,在提交表单时没有发送?我使用Html帮助程序将表单添加到页面。。。

<%using (Html.BeginForm("UpdateXML", "PatientACO", new { template = (int)Model, PopPatId = TempData["POPPATID"]}, FormMethod.Post, new { name = "editTemp", id = "temp1" }))
Response.Write("<table width="500" class="odd">");
Html.Hidden("encounter", encounter);
Html.Hidden("AddEnc", encflag);
Response.Write("</table>");   %>

这是我的控制器中的方法。。。

public ActionResult UpdateXML(int template, int PopPatId, FormCollection formCollection)
{
    foreach (var key in formCollection.Keys)
    {
       if (key.ToString() == "deactivate")
       {
                      ((XmlElement)node.SelectSingleNode("//template/elements/element[@name="Active"]")).SetAttribute("value", value);
           if (value == "N")
           {
               dateIn = DateTime.Now.ToString("dd-MMM-yy");
           }                            
       }
       if (key.ToString() == "AddEnc")
       {
           if(formCollection[key.ToString()]=="ADDENC")
                            ((XmlElement)node.SelectSingleNode("//template/elements/element[@name="FOCUSED_READMISSIONS_ID"]")).SetAttribute("value", "0");
       }
    }
}

那两个If语句从未命中。此外,当我查看formCollection对象时,我可以看到这两个字段不在其中。如何确保我的隐藏字段与表单的其余部分一起提交?

代码中有一些错误。如果您试图将html与服务器端代码混合使用,则不应该使用Response.Write。此外,您还需要将表单的内容放在大括号内。试试这个:

<% using (Html.BeginForm("UpdateXML", "PatientACO", 
       new { template = (int)Model, PopPatId = TempData["POPPATID"]}, FormMethod.Post,
       new { name = "editTemp", id = "temp1" }))
   { %>
        <table width="500" class="odd">
            <%= Html.Hidden("encounter", encounter) %>
            <%= Html.Hidden("AddEnc", encflag) %>
        </table>
<% } %>

最新更新