i create a sample mvc application to test file upload i read this useful post and do it but client validator works not and gives me error my all codes are:
i attached these in heder tag:
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery-ui-1.8.24.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
my model:
public class FIleModel
{
[Required, FileExtensions(Extensions = "csv", ErrorMessage = "Specify a CSV file. (Comma-separated values)")]
public HttpPostedFileBase myFile { get; set; }
}
error:
Unhandled exception at line 4, column 9003 in http://localhost:6284/Scripts
/jquery.validate.min.js
0x800a138f - JavaScript runtime error: Unable to get property 'call'
of undefined or null reference
on my view:
@using (Html.BeginForm("FileUpload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary();
<fieldset>
<legend>Registration Form</legend>
<ol>
<li class="lifile">
@Html.TextBoxFor(m => m.myFile, new { type = "file" })
@Html.ValidationMessageFor(m => m.myFile)
</li>
</ol>
<input type="submit" id="btnSubmit" value="Upload" />
</fieldset>
}
For file uploading, you can use this code.
In controller:
[HttpPost]
public ActionResult Create(EventModel eventmodel, HttpPostedFileBase file)
{
if (ModelState.IsValid)
{
//you can validate file here. if okay continue...
var filename = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Uploads/Photo/"), filename);
file.SaveAs(path);
eventmodel.Url = filename;
_db.EventModels.AddObject(eventmodel);
_db.SaveChanges();
return RedirectToAction("Index");
}
return View(eventmodel);
}
And View:
<div>
Image
<input type="file" name="file" id="file" />
@Html.HiddenFor( model => model.ImageUrl)
@Html.ValidationMessageFor( model => model.Url )
</div>
User contributions licensed under CC BY-SA 3.0