проблема с fileUpload в MVC, если site.master содержит <scriptmanager> - PullRequest
0 голосов
/ 14 марта 2012

Я работаю над fileUpload в MVC.мой код выглядит следующим образом:

Views / Client / 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>

Controllers / 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 голосов
/ 14 марта 2012

Убедитесь, что вы не вкладываете HTML-формы. Поэтому, когда вы открываете тег <form> на своей главной странице, убедитесь, что вы закрыли его перед отображением представления:

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

    ...

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

</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...