Передача значений через кнопку отправки?

Я пытаюсь передать значения через кнопку отправки формы.

Это значения, которые мне нужны:

[HttpPost]
        public ActionResult Upload() //string token, string filename, string moddate, object file
        {
            Dictionary<string, string> parameters = new Dictionary<string, string>();
                parameters.Add("Token", token);
                parameters.Add("FileName", filename);
                parameters.Add("ModDate", DateTime.Today.ToString());
                parameters.Add("File", file);

            String compleat = "Complete";  
            return View(compleat);              
        }

Здесь я пытаюсь получить значения:

<form action="/Home/Upload" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
@string token = @Model.Token;
@string fileName = file.tostring();
@File actualfile = file;
<br>
<input type="submit" name="submit" value="Submit" />

I would like to do something like this, my JavaScript is probably wrong as i am new to it.

После нажатия кнопки «Отправить», как я могу получить доступ к переменным с домашнего контроллера?


person Pomster    schedule 03.09.2012    source источник


Ответы (1)


В MVC вы хотите работать с моделями просмотра. Существует также помощник html.beginform, чтобы ваш код не выглядел таким запутанным.

UploadViewModel.cs

public class UploadViewModel
{
    public string Token { get; set; }
    public string FileName { get; set; }
    public string ModDate { get; set; }
    public object File { get; set; }
}

HomeController.cs

    public ActionResult Upload()
    {
        TempData["Status"] = "";
        return View(new UploadViewModel());
    }

    [HttpPost]
    public ActionResult Upload(UploadViewModel upload) //string token, string filename, string moddate, object file
    {
        //*** Do something with the upload viewmodel

        // It's probably a good idea to store the message into tempdata
        TempData["Status"] = "Complete";
        return View();
    }

Загрузить.cshtml

@model UploadViewModel

@Html.Label(TempData["Status"].ToString())
@using (Html.BeginForm())
{
    @Html.LabelFor(model => model.Token)
    @Html.EditorFor(model => model.Token)
    @Html.LabelFor(model => model.ModDate)
    @Html.EditorFor(model => model.ModDate)
    @Html.LabelFor(model => model.FileName)
    @Html.EditorFor(model => model.FileName)
    <input type="submit" name="submit" value="Submit" />
}

Это довольно простой материал, вы должны прочитать несколько руководств. Например: http://www.asp.net/mvc/tutorials

person Tomi Lammi    schedule 03.09.2012