1

画像を単純にアップロードしようとしていますが、コントローラーの HttpPostedFileBase は常に null のままです。

ここにページがあります:

<% using(Html.BeginForm("AddPicture","Album",FormMethod.Post,new{enctype=  "multipart/form-data" }))
{ %>
<%: Html.ValidationSummary(true) %>

<fieldset>
    <legend>PictureModel</legend>

    <div class="editor-label">
        <%: Html.LabelFor(model => model.PrivacyTypeID) %>
    </div>
    <div class="editor-field">
        <%: Html.DropDownList("PrivacyTypeID", null, new { name = "PrivacyTypeID", title = "Please select privacy type.", id = "PrivacyTypeID" }) %>
        <%: Html.ValidationMessageFor(model => model.PrivacyTypeID) %>
    </div>
    <div>
        Upload Image: <input type="file" name="File1" />
    </div>        
    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>

そして、ここにページのコントローラがあります:

[HttpPost]
    public ActionResult AddPicture(Guid id, PictureModel model, HttpPostedFileBase File1)
    {
        try
        {

            if (ModelState.IsValid)
            {
                var file = Request.Files[0];
                try
                {
                    Guid albumid = id;

                    if (File1 != null)
                    {

.....

誰が私に何が間違っているのか教えてもらえますか? 私はすべてを試しましたが、結果はありませんでした

4

2 に答える 2

0

ここで、間違っているか、正しい方法ではないことに注意してください。

  1. 設定するフォームの Guid id はどこにありますか。Html.Hidden(yourid);またはHtml.HiddenFor(model => model.id);<-- 後者では、事前にモデルを設定してください。例:

    public ActionResult Index(){
        PictureModel p = new PictureModel();
        p.id = Guid.NewGuid();
        return View(p);
    }
    
  2. dropdownList に適切な方法を使用すると、ここでもマッピングが間違っています。

正しい方法は、次を使用することです。

 DropDownListFor(model => model.PrivacyTypeID, model => model.selectListOfPrivacyTypes, "-- Select Privacy Type --");

ドロップダウンリスト方式を使用したい場合は、マッピングを適切に機能させるPictureModel.PrivacyTypeID代わりに名前を使用する必要がありましたPrivacyTypeID

ファイル処理がnullになる問題が修正されるかどうかはわかりませんが、間違いなくより良いコードになります。

于 2013-11-20T09:33:42.787 に答える