-2

入力値のファイル名をレンダリングしてコントローラーに送信する方法は何ですか:

<div id="fileuploaddiv" class="fileuploaddivclass">
<form action="@Model.FormAction" method="@Model.FormMethod"
    enctype="@Model.FormEnclosureType">
<input type="hidden" name="key" value="uploads/${filename}" id="filename" />
<input type="hidden" name="AWSAccessKeyId" value="@Model.AWSAccessKey" />
<input type="hidden" name="Content-Type" value="image/jpeg">
<div>
    Please specify a file, or a set of files:
    <input type="file" name="file" />
</div>
<input type="submit" value="Upload" />
</form>
</div>
4

1 に答える 1

1

いくつかの MVC3 規則を調べる必要があります (NerdDinner を最初のチュートリアルとしてお勧めします)。

@Model YourViewModel
<div id="fileuploaddiv" class="fileuploaddivclass">
    @using(Html.BeginForm(Model.FormAction, Model.FormController, FormMethod.Post)
        @Html.HiddenFor(model.key => ${fileName})
        @Html.HiddenFor(model.AWSAccessKeyID)
        @Html.HiddenFor(model.Content-Type)
        @<input type="submit" value="Submit My Form" />
    @Html.EndForm()
</div>

モデルは次のようになります (コントローラーとアクションを動的に設定しているように見えるため、ここで混乱していますが、これは珍しいことです):

public class YourViewModel
{
     public string FormAction { get; set; }
     public string FormController { get; set; }
     public int AWSAccessKeyID { get; set; }
     public string Content-Type { get; set; }
}

次にコントローラーに進みます。

[HttpGet]
public ActionResult WhateverControllerName()
{
    YourViewModel yvm = new YourViewModel();
    //Initalize viewmodel here
    Return view(yvm);
}

[HttpPost]
public ActionResult WhateverControllerName(YourViewModel yvm)
{
    if (ModelState.IsValid) {
        //Do whatever you want here. Perhaps a redirect?
    }
    return View(yvm);
}

注:私は構文が苦手なので、これを確認する必要がありますが、Visual Studio は何が機能するかを教えてくれるはずです。

于 2012-07-09T22:03:54.283 に答える