views:

30

answers:

0

I'm creating a simple form to upload a file (which can be given a friendly name).

I've gone over this code time and time again, but always get a 404 when the form posts to /MyEntities/Add (this is a post-only URL on purpose).

Any thoughts would be much appreciated - I simply can't see what I've done wrong.

The controller:

public class MyEntitiesController : Controller
{
    private DataFilesComparisonRepository repository = new DataFilesComparisonRepository();

    public ActionResult Index()
    {
        List<MyEntitiesDataset> datasets = repository.GetMyEntitiesDatasets();
        return View(datasets);
    }

    [HttpPost]
    public ActionResult Add(HttpPostedFileBase postedFile, string friendlyName)
    {
        repository.AddMyEntities(friendlyName, postedFile.FileName, postedFile.InputStream);
        return RedirectToAction("Index");
    }
        }

And the view:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<List<MyEntitiesDataset>>" %>
<%@ Import Namespace="DataFilesComparison.Models" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
 The Title
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% Html.BeginForm("Add", "MyEntities", FormMethod.Post, new { enctype = "multipart/form-data" }); %>
<p>
<input type="file" name="postedFile" />
<label for="friendlyName">Friendly Name:</label>
<%= Html.TextBox("friendlyName") %>
<input type="submit" value="Add" />
</p>
<% Html.EndForm(); %>

<% if (Model == null || Model.Count == 0) { %>
<p>No datasets found.</p>
<% } else { %>
<ul>
<% foreach (MyEntitiesDataset dataset in Model) { %>
<li>
<%= dataset.Name %>
[<%= Html.ActionLink("X", "Delete", new { ID = dataset.ID })%>]
</li>
<% } %>
</ul>
<% } %>
</asp:Content>