Asp.net mvc 4 editorforModel的多重使用
editorforModel,但现在我需要几个不同的,我不想一个接一个地使用html助手。所以我需要这样的东西Asp.net mvc 4 editorforModel的多重使用,asp.net-mvc-4,c#-4.0,Asp.net Mvc 4,C# 4.0,editorforModel,但现在我需要几个不同的,我不想一个接一个地使用html助手。所以我需要这样的东西 @model JobTrackingSystem.Areas.Panel.ViewModels.Member.NewMemberModel { @Html.EditorForModel() } @model JobTrackingSystem.Areas.Panel.ViewModels.Member.MemberDashboardModel {
@model JobTrackingSystem.Areas.Panel.ViewModels.Member.NewMemberModel
{
@Html.EditorForModel()
}
@model JobTrackingSystem.Areas.Panel.ViewModels.Member.MemberDashboardModel
{
@Html.EditorForModel()
}
所以我想把它们放在一页中的两个不同的分区中,但我的控制器也不允许使用这样的东西
这是我的控制器
public ActionResult Add(NewMemberModel input, HttpPostedFileBase Resim)
{
if (!ModelState.IsValid)
{
ShowErrorMessage("Hatalı İşlem Yaptınız.");
return RedirectToAction("Index");
}
if (Resim == null)
{
ShowErrorMessage("Lütfen Boş Alan Bırakmayın.");
return RedirectToAction("Index");
}
var epostaKontrol = Db.MyMembers.FirstOrDefault(p => p.Mail == input.Mail);
if (epostaKontrol != null)
{
ShowErrorMessage("E-Mail Adresi Adı Kullanımda.");
return RedirectToAction("Index");
}
string[] folders = new string[] { "Uploads/Member/Orjinal/", "Uploads/Member/Kucuk/" };
string fileExt = Path.GetExtension(Path.GetFileName(Resim.FileName)).ToLower();
string orjName = Guid.NewGuid() + fileExt;
string filePath = Path.Combine(Server.MapPath("~/" + folders[0]), orjName);
string fileThumbPath = Path.Combine(Server.MapPath("~/" + folders[1]), orjName);
if (!(fileExt.Equals(".jpg") || fileExt.Equals(".jpeg") || fileExt.Equals(".png")))
{
ShowErrorMessage("Yalnızca .Jpg .Jpeg ve .Png Uzantılı Dosyalar Yükleyebilirsiniz.");
return RedirectToAction("Index");
}
Resim.SaveAs(filePath);
var thumber = ImageHelper.Thumber(750, filePath, fileThumbPath);
if (!String.IsNullOrWhiteSpace(thumber))
{
ShowErrorMessage(thumber);
return RedirectToAction("Index");
}
var item = new Member
{
Name = input.Name,
Mail = input.Mail,
SurName = input.SurName,
Phone = input.Phone,
Sira = Db.MyMembers.Max(m => (short?)m.Sira) ?? 0 + 1,
DepartmentType = (DepartmentTypeForUser)input.DepartmentTypeFor,
MemberType = (MemberTypeForUser)input.MemberTypeFor,
Image = "/" + folders[1] + orjName
};
item.SetPassword(input.Password);
Db.MyMembers.Add(item);
Db.SaveChanges();
ImageResizeModel model = new ImageResizeModel()
{
ImagePath = "/" + folders[1] + orjName,
ImageThumbPath = "/" + folders[1] + orjName,
SelectionSize = "[ 750, 750 ]",
};
return View("CropImage", model);
}
那么,如何对不同的模型字段多次使用multiple
editorforModel
?我可以在NewMemberModel
类中执行类似于2个方法的操作,然后调用editorforModelMethod1-editorforModelMethod2
我不完全清楚您在问什么(尤其是“controller不允许”,一条实际的错误消息将帮助我们,并可以帮助您研究问题),但看起来您可以使用复合viewmodel:
public class NewMemberWithDashboardModel
{
public NewMemberModel NewMember { get; set; }
public MemberDashboardModel MemberDashboard { get; set; }
}
然后像这样使用它:
@Html.EditorFor(m => m.NewMember)
@Html.EditorFor(m => m.MemberDashboard)
在控制器中:
public ActionResult Add(NewMemberWithDashboardModel model, ...)
每个视图只能有一个模型,因此不可能在一个视图中有多个具有不同模型的EditorForMode。但是你可以,,创建一个包含两者的复合视图模型。是的,但是当我在一个模型中创建所有我需要的并使用editorformodel时,它会为每个页面带来所有的模型,但我需要在表单向导的4个不同页面中使用它,所以我需要使用一些editorformodel或html helperCodeCaster的常规方法来修复我的问题。我想我还没有恰当地解释了我所需要的。谢谢你的回答事实上我想我可以用你的答案来回答,我会尽快尝试。我会告诉你,如果可以的话,非常感谢你,伙计,效果很好。你是救世主。ı不知道为什么我想不起来:D@CodeCaster