Когда я нажимаю кнопку «Создать», каждый раз, когда выделяется кнопка просмотра или загрузчик изображений. У меня нет кода проверки для этого элемента html, и я не понимаю, почему это происходит.
Я использую jQuery и Ajax для публикации этой формы. Я использую ASP. NET MVC5 Это мой класс модели
public partial class tbl_products
{
public int prod_id { get; set; }
[Required]
public string prod_name { get; set; }
public string prod_image_path { get; set; }
[NotMapped]
public HttpPostedFileBase ImageUpload { get; set; } // this is to upload images on project folder
public tbl_products()
{
prod_image_path = "~/Content/Images/choose_image.png";
}
}
Это мой контроллер
public class ProductController : Controller
{
DemoDbEntities db = new DemoDbEntities();
// GET: Employee
public ActionResult Index()
{
return View();
}
public ActionResult ViewAllProducts()
{
return View(GetAllProducts());
}
IEnumerable<tbl_products> GetAllProducts()
{
return db.tbl_products.ToList<tbl_products>();
}
public ActionResult AddorEdit(int id = 0)
{
//create new object of prodocts to pass it to view
tbl_products prodObj = new tbl_products();//image path set to default image
return View(prodObj);
}
[HttpPost]
public ActionResult AddorEdit(tbl_products prodObj)
{
//check if the input type=file has image
if(prodObj.ImageUpload != null)
{
string fName = Path.GetFileNameWithoutExtension(prodObj.ImageUpload.FileName);
string fExten = Path.GetExtension(prodObj.ImageUpload.FileName);
fName = fName + DateTime.Now.ToString("yymmssfff") + fExten;
prodObj.prod_image_path= "~/Content/Images/" + fName;
//fName = Path.Combine(Server.MapPath("~/Content/Images/"), fName);
prodObj.ImageUpload.SaveAs(Path.Combine(Server.MapPath("~/Content/Images/"), fName));
}
db.tbl_products.Add(prodObj);
db.SaveChanges();
return RedirectToAction("ViewAllProducts");
}
}
Ниже вид
Ajax и jQuery // метод для передачи данных формы в контроллер с помощью ajax функции jQueryAjaxPost (form) {
//$.validator.unobtrusive.parse(form);//to validate form validation
if ($(form).valid())
{
var ajaxConfig = { // this is a complete objecct
type: 'POST',
url: form.action,
data: new FormData(form),
success: function (response) {
$('#viewAllTab').html(response);
}
}
//check if the form has file uploader
//then set these two attributes to false
if ($(form).attr('enctype') == "multipart/form-data")
{
ajaxConfig["contentType"] = false;
ajaxConfig["processData"] = false;
}
$.ajax(ajaxConfig); // passing object to ajax function
}
else
{
return false;
}
}
Я не могу создать продукт с помощью метода ajax post.