C# mvc按钮值单击不工作

C# mvc按钮值单击不工作,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,在过去的几天里,我一直在解决一个问题,这让我很困惑。在这个表单中,我有两个文件上传输入,三个按钮,一个值为create、cancel和populate。用户浏览并选择一个文件,点击上传按钮,其提交值在我的操作方法“我保存文件”中填充,有一个静态类,使用状态机yield等和一些json序列化来解析数据,并将文件保存在appdata/uploads文件夹中。当他们点击cancel时,我执行一些功能,当他们点击create时,我不解析数据,只保存它。所有按钮输入在此页面上发布到相同的操作方法。所发生的

在过去的几天里,我一直在解决一个问题,这让我很困惑。在这个表单中,我有两个文件上传输入,三个按钮,一个值为create、cancel和populate。用户浏览并选择一个文件,点击上传按钮,其提交值在我的操作方法“我保存文件”中填充,有一个静态类,使用状态机yield等和一些json序列化来解析数据,并将文件保存在appdata/uploads文件夹中。当他们点击cancel时,我执行一些功能,当他们点击create时,我不解析数据,只保存它。所有按钮输入在此页面上发布到相同的操作方法。所发生的是,在本地机器上,在我的服务器上的测试环境中,一切都很完美,似乎填充例程甚至没有运行。我甚至在异常表中添加了一个try-catch和log,但没有任何效果。我无法在测试环境中调试。更不用说解析了,如果用户选择了一个文件并点击了o populate,它会首先检查文件格式是否正确,我试图通过附加一个无效的格式抛出一个异常,但它甚至没有捕捉到。有趣的是,在同一操作方法中单击“保存”按钮,如果附加了无效文件,我的错误处理会捕获错误。我只是感到困惑。请建议

 <legend>Enter a new Run Log Entry</legend>
            @using (Html.BeginForm("Create", "RunLogEntry", FormMethod.Post, new { enctype = "multipart/form-data" }))
            {

                @Html.ValidationSummary(true)
                <div class="exception">@(ViewBag.ErrorMessage)</div>
                <div class="bodyContent">
                    <span class="leftContent">Load List File (Select): </span><span class="rightContent">
                        <input type="file" name="file" id="file1" style="width: 500px" />
                    </span>
                </div>
                if (Model.LoadListStoredFileName != null)
                                   {
                <div class="bodyContent">
                    <span class="leftContent">Attached Load List: </span><span class="rightContent">
                        @Html.ActionLink(Model.LoadListStoredFileName, "Download", new { @file = Model.LoadListStoredFileName })
                    </span>
                </div>
                                   }
                <div class="bodyContent">
                    <span class="leftContent">Output File (Select): </span><span class="rightContent">
                        <input type="file" name="file" id="file2" style="width: 500px" />
                    </span>
                </div>
                if (Model.OutputStoredFileName != null)
                                   {
                <div class="bodyContent">
                    <span class="leftContent">Attached Output: </span><span class="rightContent">
                        @Html.ActionLink(Model.OutputStoredFileName, "Download", new { @file = Model.OutputStoredFileName })
                    </span>
                </div>
                                   }
                <div class="bodyContent">
                    <span class="leftContent">Import Files: </span>
                    <button name="submit" class="art-button" type="submit" value="Populate" style="width: 100px">
                        Upload</button>
                    <button name="submit" class="art-button" type="submit" value="Remove" style="width: 100px">
                        Remove</button>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Operator")
                    </span><span class="rightContent">
                        @Html.DropDownList("OperatorID", String.Empty)
                    </span>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Run ID")
                    </span><span class="rightContent">[Generated] </span>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Run Start Date / Time")
                    </span><span class="rightContent">
                        @Html.EditorFor(model => model.RunDate)
                        &nbsp;
                        @Html.DropDownList("Hour", ListHelpers.HourList())
                        :
                        @Html.DropDownList("Minute", ListHelpers.Minute15List())
                        &nbsp;
                        @Html.DropDownList("AMPM", ListHelpers.AMPMList())
                    </span>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("System")
                    </span><span class="rightContent">
                        @Html.DropDownList("SystemID", String.Empty)
                    </span>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Run Type")
                    </span><span class="rightContent">
                        @Html.DropDownList("RunTypeID", String.Empty)
                    </span>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Run Description")
                    </span><span class="rightContent">
                        @Html.TextAreaFor(model => model.RunDescription, new { style = "width: 600px; height=30px" })
                    </span>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Assay Performance Issues")
                    </span><span class="rightContent">
                        @Html.DropDownList("AssayPerformanceIssues1", ListHelpers.YesNoList())
                    </span>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Tests/Cycles Requested")
                    </span><span class="rightContent">
                        @Html.EditorFor(model => model.SPTestsRequested)
                    </span>
                </div>

                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Tests/Cycles Completed")
                    </span><span class="rightContent">
                        @Html.EditorFor(model => model.SPTestsCompleted)
                    </span>
                </div>

                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Run Status")
                    </span><span class="rightContent">
                        @Html.DropDownList("RunStatusID", String.Empty)
                    </span>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Assay")
                    </span><span class="rightContent">
                        @Html.ListBoxFor(model => model.SelectedAssayIDs, new MultiSelectList(RunLog.Domain.Lists.GlobalList.AssayListItems(), "ID", "Name", Model.SelectedAssayIDs))
                    </span>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Error Code")
                    </span><span class="rightContent"><span id="ChildDialogLink" class="treeViewLink">Click
                        here to Select Error Codes</span>
                        <br />
                        <span id="ErrorCodeDisplay" style="cursor: pointer; text-decoration: underline;">@(Model.ErrorDescription)</span>
                        @Html.HiddenFor(model => model.ErrorDescription)
                    </span>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Service Entry Request")
                    </span><span class="rightContent">
                        @Html.DropDownList("ServiceRequest", ListHelpers.YesNoList())
                    </span>
                </div>
                <div class="bodyContent">
                    <span class="leftContent">
                        @Html.Label("Problem Description")
                    </span><span class="rightContent">
                        @Html.TextArea("ProblemDescription", new { style = "width: 600px; height: 30px" })
                    </span>
                </div>
                <p>
                    <input id="LogType" type="hidden" value="Run" />
                    <input id="ID" type="hidden" value="0" />
                    @if (Model.ExitCode == "1")
                    {
                        @Html.Hidden("ExitCode", Model.ExitCode)
                    }
                    else
                    {
                        <input id="ExitCode" type="hidden" value='0' />
                    }
                </p>
                @Html.HiddenFor(model => model.MaxReplicateId)
                @Html.HiddenFor(model => model.MinReplicateId)
                @Html.HiddenFor(model => model.OutputFileName)
                @Html.HiddenFor(model => model.OutputStoredFileName)
                @Html.HiddenFor(model => model.LoadListFileName)
                @Html.HiddenFor(model => model.LoadListStoredFileName)
                @Html.HiddenFor(model => model.MinTestCompletionDate)
                @Html.HiddenFor(model => model.MaxTestCompletionDate)
                <div class="bodyContent">
                    <span class="leftContent"></span><span class="rightContent">
                        <button name="submit" class="art-button" type="submit" value="Create">
                            Create</button></span>
                </div>
            }
        </fieldset>

Now the controller action method as follows:

   [HttpPost]
        public ActionResult Create(RunLogEntry runLogEntry, String ServiceRequest, string Hour, string Minute, string AMPM,
                                     string submit, IEnumerable<HttpPostedFileBase> file, String AssayPerformanceIssues1)
        {

 if (submit == "Create")
            {


                    if (file.ElementAt(0) != null && !file.ElementAt(0).FileName.Contains("json"))
                    {
                        ModelState.AddModelError(string.Empty, "Please attach a valid .JSON file for Load List selection");
                    }

                    if (file.ElementAt(1) != null && !file.ElementAt(1).FileName.Contains("out"))
                    {
                        ModelState.AddModelError(string.Empty, "Please attach a valid .OUT file for Load List selection");
                    }

           }


if (submit == "Populate")
            {
try
{
if (file.Count() > 0)
    {
                        foreach (var modelValue in ModelState.Values)
                        {
                            modelValue.Errors.Clear();
                        }

                        if (file.ElementAt(0) != null && !file.ElementAt(0).FileName.Contains("json"))
                        {
                            ModelState.AddModelError(string.Empty, "Please attach a valid .JSON file for Load List selection");
                        }
                        else if (file.ElementAt(0) != null)
                        {
                            //If users are attaching another file, delete previous one
                            if ((System.IO.File.Exists(runLogEntry.LoadListStoredFileName)))
                                System.IO.File.Delete(runLogEntry.LoadListStoredFileName);

                            //Save LoadList File:
                            DateTime uploadDate = DateTime.Now;
                            string destinationPath = string.Format("{0}\\{1}\\{2}\\{3}\\", Server.MapPath("~/App_Data/uploads"), uploadDate.ToString("yyyy"), uploadDate.ToString("MMM"), uploadDate.ToString("dd"));
                            if (!Directory.Exists(destinationPath))
                                Directory.CreateDirectory(destinationPath);

}
}

将记录器添加到应用程序中,例如log4net,并观察这里到底发生了什么。
您有几个同名的标记。它是否可能引发一些副作用?

是的,由于html 4 iis,它在服务器上无法正确呈现