2012-06-26 131 views
0

過去幾天我被困在一個問題中,它讓我感到困惑。因此,在這種形式中,我有兩個文件上傳輸入,三個按鈕之一,具有創建,取消和填充的值。用戶瀏覽並選擇一個文件,然後點擊上傳按鈕,其中提交的值填充在我的操作方法中,我保存文件,有一個靜態類來解析數據,使用狀態機良率等和一些json序列化並將文件保存在appdata/uploads folder.when他們擊中取消我做了一些功能,當他們打創建我不分析數據,但保存它。所有按鈕輸入均發佈到此頁面上的相同操作方法。發生的事情是,在本地機器上,在我的服務器上的測試環境中,一切都很完美,似乎填充例程甚至不運行。我甚至添加了一個try catch並登錄到異常表,但沒有任何作用。我無法在測試環境中進行調試。更不用說解析了,如果用戶選擇了一個文件並點擊填充,它首先檢查文件格式是否是正確的格式,我嘗試通過附加無效格式引發異常,甚至沒有捕獲到。現在我的保存按鈕在相同的操作方法內點擊很有趣,如果我附加一個無效文件,我的錯誤處理會捕獲錯誤。我只是感到困惑。請建議!mvc按鈕值單擊不起作用

<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); 

} 
} 

回答

0

將記錄器添加到應用程序(例如log4net)並觀察這裏發生了什麼。 你有幾個同名的標籤。它有可能引發一些副作用嗎?

+0

yes yes由於html 4 iis,它不能在服務器上正確呈現 – user1475788