2015-10-21 34 views
1

我有一个表格和一个上传(我使用PLUploader),并希望用户填写文本框和PLUploader中选择图像,当点击提交按钮,0​​我传递图像和文本框值一个动作,我写这个代码,但总是我在文本框的值为空,但获取图像的行动。传递文件和模型到一个动作asp.net

我觉得这个问题涉及到用form和PLuploader调用一个动作。

public ActionResult Insert(News news, HttpPostedFileBase file) 
{ 
    // I get null in new but get file in HttpPostedFileBase 
    int result = 0; 

    HttpPostedFileBase FileData = Request.Files[0]; 

    string fileName = null; 

    fileName = Path.GetFileName(FileData.FileName); 

    if (ModelState.IsValid) 
    { 
     //do some thing 
    } 
    else 
    { 
     return View(news); 
    } 
} 

@using (Html.BeginForm("Insert", "News", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    <div class="col-xs-12"> 
     @Html.LabelFor(model => model.NewsTitle) 
     @Html.TextBoxFor(model => model.NewsTitle, new { @class = "form-control",@name="title" }) 
     @Html.ValidationMessageFor(model => model.NewsTitle) 
    </div> 

    <div class="col-xs-12"> 
     <div id="uploader" class="img-plc"> 
      <p>You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p> 
     </div> 
     <ul id="gallery"></ul> 
    </div> 
    <div class="col-xs-12"> 
     @Html.LabelFor(model => model.NewsText, new { @class = "text-right" }) 
     @Html.ValidationMessageFor(model => model.NewsText) 

     @Html.TextAreaFor(model => model.NewsText, new { @rows = "10", @cols = "80", @class = "text-editor", @name = "title" }) 
    </div> 

    <button type="submit">Submit</button> 
} 

var uploader = $("#uploader").pluploadQueue({ 
       // General settings 
       runtimes: 'html5,gears,flash,silverlight,browserplus,html4', 
       url: '@Url.Action("Insert", "News")', 
       max_file_size: '10mb', 
       chunk_size: '1mb', 
       unique_names: true, 
       multi_selection: false, 
       multiple_queues: false, 

       // Specify what files to browse for 
       filters: [ 
        { title: "Image files", extensions: "jpg,png" } 
       ], 

       // Flash settings 
       flash_swf_url: '/Scripts/Moxie.swf', 

       // Silverlight settings 
       silverlight_xap_url: '/Scripts/Moxie.xap' 

      }) 

    $('form').submit(function (e) { 
       var uploader = $('#uploader').pluploadQueue(); 

       // Files in queue upload them first 
       if (uploader.files.length > 0) { 
        // When all files are uploaded submit form 
        uploader.bind('StateChanged', function() { 
         if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) { 
          $('form')[0].submit(); 
         } 
        }); 

        uploader.start(); 
       } else { 
        alert('You must queue at least one file.'); 
       } 

       return false; 
      }); 

我该如何解决这个问题?我想在这个行动中获得新闻和档案。

回答

0

创建一个视图模型包含两个属性

public class NewsViewModel { 

    public News News { get; set; } 
    public HttpPostedFileBase File { get; set; } 

} 

public ActionResult Insert(NewsViewModel model) { 

    /* ... */ 

} 

当您创建视图通过视图模型到视图中。确保你使用正确的名称输入字段,使其正确绑定:

@Html.TextBoxFor(model => model.File, new { type = "file" }) 

我会假设你可能要告诉你的脚本文件输入建议立即进行删除有什么名字。

相关问题