繁体   English   中英

ASP.NET MVC多个开始表单?

[英]ASP.NET MVC multiple begin forms?

嗨,我正在使用多个开始表格。 我不确定这是不是一个好主意。 这是我的代码。

<% using (Html.BeginForm("TagManagement", "InternalTag",FormMethod.Post))
   {%>
   <%: Html.AntiForgeryToken() %>

    <table>         
        <tr>
            <td><%:Html.Label("Type") %></td>
            <td style="text-align:left"><%:Html.DropDownList("ObjectType",ViewData["TagObjects"] as IEnumerable<SelectListItem>)%></td>
        </tr>
        <tr>
            <td><%:Html.Label("Search ID")%></td>
            <td style="text-align:left"><%:Html.TextBox("ObjectID2")%></td>
        </tr>
        <tr>
            <td></td>
            <td><input id="Search" type="submit" value="Search" />&nbsp;&nbsp;&nbsp;<input id="Create" type="button" value="Add to New Tag" onclick="AddTagElements()" /></td>
        </tr>
    </table>
    <br />

<% } %>

<% using (Html.BeginForm("CreateTag","InternalTag",FormMethod.Post)) { %>
<%: Html.AntiForgeryToken() %>
<div id="AddTag">
      <input id='SaveTag' type='submit' value='Save' style='width: 125px' />
</div>
<% } %>

路由代码

"Tags/{controller}/{action}/{id}/{type}",
new { action = "Index", id = UrlParameter.Optional, type = UrlParameter.Optional }

我的控制器方法:

public ActionResult TagManagement(FormCollection FC,Guid? ID,InternalTagRef_Types? Type)
public ActionResult CreateTag(FormCollection FC, Guid ID, InternalTagRef_Types Type)

当我点击搜索TagManagement动作参数得到正确填充。 当我单击SaveTag时,它会尝试调用CreateTag操作但不能,因为它缺少ID和Type。 我得到错误参数字典包含非可空类型'System.Guid'的参数'ID'的空条目。 它应该从URL获取这些值,即http:// localhost:1338 / Tags / InternalTag / TagManagement / D104EBF5-470B-4FAA-9FC7-5391922CCE94 /像TagManagement这样的项目。 请帮忙。

您的第二个表单不包含任何输入字段(提交按钮除外),因此在提交表单时,不会向服务器发送任何内容,并且控制器操作无需绑定任何内容。 因此,您需要像在第一个表单中一样包含文本字段或隐藏字段。


更新:

您在生成的操作中包含路由参数:

<% using (Html.BeginForm(
        "CreateTag", "InternalTag", 
        new { id = RouteData.Values["id"], type = RouteData.Values["type"] }, 
        FormMethod.Post)) { %>
    <%: Html.AntiForgeryToken() %>
    <div id="AddTag">
        <input id='SaveTag' type='submit' value='Save' style='width: 125px' />
    </div>
<% } %>

我建议在此表单中包含一个隐藏字段,其中包含您的标记,因此在提交表单时,您的标记将可用。 其次,同样重要

<input id="Create" type="button" value="Add to New Tag" onclick="AddTagElements()" />

AddTagElements javascript函数需要使用新标记更新隐藏字段的值。

<% using (Html.BeginForm("CreateTag","InternalTag",FormMethod.Post)){%>
    <%: Html.AntiForgeryToken() %>
    <div id="AddTag">
        <input id="tags" type="hidden" value=""/>
        <input id='SaveTag' type='submit' value='Save' style='width: 125px' />
    </div>
<%}%>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM