Pregunta

I have a partial view that allows users to submit files.

<form action="Attachments" method="post" enctype="multipart/form-data" target="_self">
    <div>
        <label style="text-align: left;">Add File:</label>
    </div>
    <div>
        <input type="file" name="file" id="file" style="width: 275px;" />
    </div>
    <div style="text-align: right;">
        <input type="submit" value="Add"/>
    </div>
</form>

This calls the AttachmentsController method for HTTPPost

[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{

    if (file.ContentLength > 0)
    {
        var fileName = Path.GetFileName(file.FileName);
        var path = Path.Combine("C:\\Attachments", fileName);
        file.SaveAs(path);

        return AddAttachment(fileName);
    }

    return RedirectToAction("Failed", "Attachments");
}

The addAttachment returns "return RedirectToAction("Index", "Attachments");" After all this is done to add the attachment the whole screen is refreshed and I want only the partial view for adding attachments refreshed. How can I accomplish this!?

¿Fue útil?

Solución

You should post your file by ajax request. And when server returns response, update only necessary page parts.

There is a nice form plugin that allows you to send an HTML form asynchroniously http://malsup.com/jquery/form/.

$(document).ready(function() { 
    $('#myForm1').ajaxForm(); 
});

or

$("someButton").click(function(){
    $('#myForm1').ajaxSubmit();
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top