سلام دوستان . من یک فرم ثبت نام ایجاد کردم که در آن هر کاربر میتونه اطلاعات اش همراه با یک فایل آپلود را به سمت سرور ارسال نماید . با وجود اینکه فیلد آپلود رو Required تعریف نکردم تازمانی که فایلی برای آپلود انتخاب نشود فرم ارسال نمیشود . به نظرم مشکل از کد های کنترلر هست،
کد هایی که در کنترلر نوشتم اینه :
public ActionResult Create([Bind(Include = "ID,FullName,Mellicode,PostTime,Mobile,Telephone,Email,Age,Gender,Address,Postalcode,LastEducationalCertificate,FieldOfStudy,JobExperience,MaritalStatus,Comment,FilePathName,Invitation,Invalidity,Recruitment")] RegisterForm registerForm, HttpPostedFileBase UploadFile) { var myUniqueFileName = string.Format(@"{0}.txt", Guid.NewGuid()); if (ModelState.IsValid) { string strFileExtension = System.IO.Path.GetExtension(UploadFile.FileName).ToUpper(); string strContentType = UploadFile.ContentType.ToUpper(); if (UploadFile.ContentLength > 100 * 1024) { return View("Error"); } else if(UploadFile.ContentLength<100*1024 && UploadFile !=null) { registerForm.FilePathName = myUniqueFileName + UploadFile.FileName; if (System.IO.Directory.Exists(strPath) == false) { System.IO.Directory.CreateDirectory(strPath); } string strPathName = string.Format("{0}\\{1}", strPath, registerForm.FilePathName); UploadFile.SaveAs(strPathName); } db.Registers.Add(registerForm); db.SaveChanges(); return RedirectToAction("Back"); } return View(registerForm); }
ممنون میشم بگید این کدها رو چه تغییر باید بدم تا بتونم فرم رو بدون آپلود فایل ارسال کنم .
با سلام
شما گفتید که فرم ارسال نمیشه
پس مشکل از سمت ویو هست
کد های ویو را قرار دهید
فرم وقتی که برای فیلد رزومه فایلی رو آپلود میکنم ارسال میشود
اما وقتی که فایلی رو آپلود نمیکنم فرم ارسال نمیشود با وجود اینکه این فیلد آپلود required نیست.
ضمنا ممنون میشم زودتر تاپیک ها رو بررسی کنید .
قسمت view آپلود
<div class="form-group"> @Html.LabelFor(model => model.FilePathName, htmlAttributes: new { @class = "control-label col-md-10" }) <div class="col-md-10"> @Html.Upload("UploadFile", new { htmlAttributes = new { @class = "form-control demoInputBox ", type = "file", runat = "server" } }) @Html.ValidationMessageFor(model => model.FilePathName, "", new { @class = "text-danger" }) </div> </div> </div>
برای آپلود هم از extention Method زیر استفاده شده است :
using System.Linq; using System.Linq.Expressions; using System.Web; using System.Web.Mvc; public static class UploadHelper { public static MvcHtmlString Upload(this HtmlHelper helper, string name, object htmlAttributes = null) { //helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(ExpressionHelper.GetExpressionText(expression)) TagBuilder input = new TagBuilder("input"); input.Attributes.Add("type", "file"); input.Attributes.Add("id", helper.ViewData.TemplateInfo.GetFullHtmlFieldId(name)); input.Attributes.Add("name", helper.ViewData.TemplateInfo.GetFullHtmlFieldName(name)); input.Attributes.Add("class", "required"); if (htmlAttributes != null) { var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); input.MergeAttributes(attributes); } return new MvcHtmlString(input.ToString()); } }
من میخوام از این روش استفاده کنم اگه از دوستان کسی میتونه ممنون میشم جواب بده
اگه از MetaData هم استفاده کردی
اونجا رو هم چک کن شاید اونجا اجباریش کرده باشی.
نه از MataData استفاده نکردم وقتی هم فیلد رو از نوع HttpPostedFileBase در نظر میگیریم باید یک چیزی رو آپلود کنیم و بعد فرم ارسال می شود من میخوام Reguired نباشد تا الان به نتیجه نرسیدم .
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)