Asp.net mvc 2 mvc-System.Web.mvc.ViewUserControl

Asp.net mvc 2 mvc-System.Web.mvc.ViewUserControl,asp.net-mvc-2,Asp.net Mvc 2,嘿。。。 如何在post操作时将提交按钮的id从ViewUserControl发送到Controller?当我有正常的观点时,我可以这样写: [HttpPost] public ActionResult KontaktIzabran(string myId) { //some code } 现在myId总是空的。。。。 这是我的用户控件 <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl

嘿。。。 如何在post操作时将提交按钮的id从ViewUserControl发送到Controller?当我有正常的观点时,我可以这样写:

[HttpPost]
public  ActionResult KontaktIzabran(string myId)
{
    //some code 

}   
现在myId总是空的。。。。 这是我的用户控件

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<KontaktModel>" %>
<%@ OutputCache Duration="1200" VaryByParam="*" %>
<div id="sign-in-pop" class="popup">    
<div class="modal fat-form">
    <div class="clipper">
        <div class="left"></div>
        <div class="content">Sign In</div>
        <div class="right"></div>
    </div>                    
    <% Html.BeginForm("IzborKontaktaPopUp", "Kontakt"); %>
         <%: Html.ValidationSummary(true) %>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.Naziv)%>
            <%: Html.ValidationMessageFor(model => model.Naziv) %>  
            <input type="submit" value="Traži" name="submitButton" id="submitButton" />
            <input type="submit" value="Dodaj novi" name="noviKontakt" />
        </div>
    <% Html.EndForm(); %>
</div>       
</div>   

登录
型号:Naziv)%>
型号:Naziv)%>

看起来您没有名为“myId”的表单字段,因此submit无法将其发送回控制器。相反,它将发回一个FormCollection,其中包含以下各项的当前值:

<%: Html.TextBoxFor(model => model.Naziv)%>
<input type="submit" value="Traži" name="submitButton" id="submitButton" />
<input type="submit" value="Dodaj novi" name="noviKontakt" />
model.Naziv)%%>
[HttpPost]
公共行动结果KontaktIzabran(字符串myId,字符串noviKontakt)
{
如果(!string.IsNullOrEmpty(noviKontakt))
{
// 
//用于提交表单
}
其他的
{
// 
//用于提交表单
}
...
}

你能显示你的视图/用户控件吗?我试过了,但两个字符串都是空的,不知道单击了哪个按钮。当我只有视图,但使用UserControl时,此选项有效。传递的值始终为空:(@Cipiripi,这很奇怪。单击的提交按钮的名称应该发送到服务器。您可以使用
FireBug
查看请求中到底发送了哪些参数吗?您也不是嵌套表单,是吗?最后我看到您的用户控件中有一个
OutputCache
指令。请尝试删除它以使确保它没有以某种方式干扰。此窗体的行为类似于弹出窗口,它是一种嵌套窗体。我尝试删除OutputCache,但所有内容仍然存在same@Cipiripi,在显示此用户控件后,是否在HTML中嵌套了
标记?如果是,则这是您的问题。这是不允许的。@Cipiripi,禁止嵌套HTML表单,否则您将获得未定义的行为。您可能需要删除外部表单或以不同方式重新组织标记,以避免嵌套表单。
[HttpPost]
public  ActionResult KontaktIzabran(string myId, string noviKontakt)
{
    if (!string.IsNullOrEmpty(noviKontakt))
    {
        // <input type="submit" value="Dodaj novi" name="noviKontakt" />
        // was used to submit the form
    }
    else
    {
        // <input type="submit" value="Traži" name="submitButton" id="submitButton" />
        // was used to submit the form
    }

    ...
}