如果site.master包含<scriptmanager> </scriptmanager>,则在MVC中出现fileUpload问题

时间:2012-03-14 14:18:20

标签: asp.net-mvc file-upload

我在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中,我在“HttpPostedFileBase uploadFile”中获得空值。

<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控件。

1 个答案:

答案 0 :(得分: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>