2012-03-14 6 views
0

iamがmvcのfileUploadで作業しています。site.masterに<scriptmanager>が含まれている場合、MVCのfileUploadで問題が発生します。

ビュー/クライアント/ AddClient.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Auditz.UI.Web.Automation.ClientService.ClientDto>" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

<h1> 
    Add A Client</h1> 

<% using (Html.BeginForm("AddClient","Client",FormMethod.Post,new {enctype = "multipart/form-data" })) 
    { %> 
<%: Html.ValidationSummary(true) %> 
<div class="tabcontrol"> 
    <asp:Panel ID="pnlClientDtls" runat="server"> 
     <asp:TabContainer ID="TabContainer" runat="server" Width="100%" ActiveTabIndex="1"> 
      <asp:TabPanel ID="tb1" runat="server"> 
       <HeaderTemplate> 
        Client Details 
       </HeaderTemplate> 
       <ContentTemplate> 
        <div class="formelements"> 
        ..................... 
        .............. 
         </div> 

コントローラ/ FileUploadController.cs

namespace FileUploadTest.Controllers 
{ 
public class FileUploadController : Controller 
{ 
    // 
    // GET: /FileUpload/ 

    public ActionResult FileUpload() 
    { 
     return View(); 
    } 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult FileUpload(HttpPostedFileBase uploadFile) 
    { 
     if (uploadFile.ContentLength > 0) 
     { 
      string filePath = Path.Combine(HttpContext.Server.MapPath("~/Uploads"), 
              Path.GetFileName(uploadFile.FileName)); 
      uploadFile.SaveAs(filePath); 
     } 
     return View(); 
    } 

} 
} 

Evrythingこのコードで、必要に応じて動作しますが、次のよう 私のコードです。 しかし、私が配置し、Shared/Site.Masterの場合、iamは "HttpPostedFileBase uploadFile"でnull値を取得しています。

<form id="form1" runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
</form> 
<div> 
<asp:ContentPlaceHolder ID="MainContent" runat="server"> 
       </asp:ContentPlaceHolder> 
</div> 

私はいくつかのAjaxコントロールを追加したいので、私のコードから削除することはできません。

答えて

0

HTMLフォームをネストしないように注意してください。だからあなたのマスターページでは、<form>タグを開いたときにビューをレンダリングする前に閉じていることを確認します。

<body> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" runat="server"> 
     </asp:ScriptManager> 
    </form> 

    ... 

    <asp:ContentPlaceHolder ID="MainContent" runat="server" /> 

</body> 
+0

「タイプのコントロール 『MainContent_TabContainer』 『タブコンテナは』にrunat =サーバーとのformタグの内側に配置されなければなりません。」このエラーが表示される前にフォームタグを閉じる場合 – Santosh

+0

どこが間違っていますか – Santosh

+0

おめでとう@ダーリン:https://twitter.com/#!/marcgravell/status/179944638772281344 –

関連する問題