ورود

View Full Version : ارسال مقدار null به متد remote شده هنگام edit



wolf_majid
شنبه 20 دی 1393, 17:57 عصر
سلام دوستان
موقعیکه برای ویرایش اطلاعات میرم با اینکه میبینم داخل فیلد مورد نظر اطلاعات هست اما توی متد remote کننده برای کلاینت نال ارسال میکنه
هنگام اینزرت اطلاعات مشکلی ندارم

این کلاس توی لایه dal
[DisplayName("نمونه های وب")]
public class WebSampleMetadataSource
{
[HiddenInput(DisplayValue = false)]
public int Id { set; get; }
[ScaffoldColumn(false)]
[Required(ErrorMessage = "کد کاربر فیلد الزامی است")]
public int User_Id { get; set; }

[StringLength(50, MinimumLength = 2)]
[Display(Name = "تصویر")]
[Required(ErrorMessage = "آدرس تصویر را وارد کنید")]
public string Picture { get; set; }

[Required(ErrorMessage = "نام وب سایت را وارد کنید")]
[Remote("ValidateWebSampleName", "Admin")]
[Display(Name = "وب سایت")]
public string Name { get; set; }

[Display(Name = "لینک")]
public string Link { get; set; }

[Display(Name = "توضیحات")]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
}

متد remot کننده

public JsonResult ValidateWebSampleName(string name)
{
if (string.IsNullOrEmpty(name))
return Json("نام وب سایت را وارد کنید", JsonRequestBehavior.AllowGet);
if (name.Length < 2 || name.Length > 50)
return Json("نام سایت نباید کمتر از 2 کاراکتر و بیش از 50 کاراکتر باشد", JsonRequestBehavior.AllowGet);
return new WebSampleRepository().FetchByName(name) != null
? Json("این نام قبلا انتخاب شده است", JsonRequestBehavior.AllowGet)
: Json(true, JsonRequestBehavior.AllowGet);
}


این اکشن های edit

[HttpGet]
public ActionResult EditWebSample()
{
return View(new WebSampleRepository().SelectAll().ToList());
}

[HttpPost]
public ActionResult EditWebSample(WebSample sample, HttpPostedFileBase picture)
{
var findByName = new WebSampleRepository().FetchByName(sample.Name);
if ( findByName!= null && findByName.Id!=sample.Id)
ModelState.AddModelError("", "رکوردی با این نام سایت دربانک اطلاعاتی موجود است");

if (!ModelState.IsValid) return View("EditWebSample");

if (picture == null)
return null;
var fileName = Path.GetFileName(picture.FileName);
if (fileName == null) return null;
var path = Path.Combine(
Server.MapPath("~/Content/WebSamples-pic"), fileName);
if (System.IO.File.Exists(path)) System.IO.File.Delete(path);
picture.SaveAs(path);
sample.Picture = "/Content/WebSamples-pic/" + fileName;
var rep = new WebSampleRepository();
rep.Edit(sample);
return RedirectToAction("WebSamples", "Home", new { area = "" });
}

این ویوی نمایش اطلاعات برای ویرایش :
@model List<WebSample>
@{
ViewBag.Title = "ویرایش مدل وب";
}
<p>نکته : تصاویر پس از زدن دکمه ویرایش تغییر خواهند کرد</p>
<br/>
@foreach (var sample in @Model)
{
@Html.EditorFor(x=>sample)
break;
}

این هم تمپلیت edit
@model Dal.WebSample


@using (Html.BeginForm("EditWebSample", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()

<div class="form-horizontal">
<hr>
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.User_Id)

<div class="form-group">
@Html.LabelFor(model => model.Picture, new { @class = "control-label col-md-2" })
<div class="col-md-10">
<input name="Picture" id="Picture" type="file">
@Html.ValidationMessageFor(model => model.Picture)
</div>
<br><br>
<div class="ShowSample" style="background-image: url('@Model.Picture')"></div>
</div>

<div class="form-group">
@Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
</div>

<div class="form-group">
@Html.LabelFor(model => model.Link, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Link)
@Html.ValidationMessageFor(model => model.Link)
</div>
</div>

<div class="form-group">
@Html.LabelFor(model => model.Description, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
</div>

<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="ویرایش" class="btn btn-default" />
</div>
</div>

<br>
</div>

}





لطفا راهنمایی کنید

wolf_majid
شنبه 20 دی 1393, 18:29 عصر
دوباره سلام
127445

127446

wolf_majid
یک شنبه 21 دی 1393, 12:41 عصر
سلام
میشه بگید خودتون چطور رکوردهای جداولتون رو ویرایش میکنید که اعتبارسنجی سمت کلاینت هم برقرار باشه ؟
من به حل مشکلم نیاز دارم
لطفا" اگه کسی میدونه کمک کنه
نمیدونم چرا به پست هام جواب داده نمیشه

wolf_majid
یک شنبه 21 دی 1393, 22:59 عصر
دوباره سلام
چرا متاهای زیر سمت کلاینت موقع edit جواب نمیده ؟
//[Range(2,50,ErrorMessage = "حداقل 2 کاراکتر و حداکثر 50 کاراکتر")]
//[Remote("ValidateWebSampleName", "Admin")]