我的问题是:如何传递集合和引用对象类型而不写这么多HiddenFors?MVC将集合和引用对象从BeginForm发送到视图?
这是我的模型:
public partial class AddressObject
{
public int ID { get; set; }
public string KeyNumber { get; set; }
public int AddressID { get; set; }
public int ObjectTypeID { get; set; }
public double ResidentalArea { get; set; }
public short ResidentsNumber { get; set; }
public Nullable<short> TuristBedsNumber { get; set; }
public virtual Address Address { get; set; }
public virtual ObjectType ObjectType { get; set; }
public virtual ICollection<TrashCan> TrashCans { get; set; }
public virtual ICollection<ObjectOwner> ObjectOwners { get; set; }
}
这是我的看法:
@Html.HiddenFor(model => model.Address.CityID);
@Html.HiddenFor(model => model.Address.Hood);
@Html.HiddenFor(model => model.Address.ID);
@Html.HiddenFor(model => model.Address.Number);
@Html.HiddenFor(model => model.Address.Region);
@Html.HiddenFor(model => model.Address.Street);
@Html.HiddenFor(model => model.Address.City.Addresses);
@Html.HiddenFor(model => model.Address.City.ID);
@Html.HiddenFor(model => model.Address.City.Name);
@Html.HiddenFor(model => model.Address.City.PostalCode);
@Html.HiddenFor(model => model.AddressID);
@Html.HiddenFor(model => model.ObjectOwners);
@Html.HiddenFor(model => model.ObjectType.ID);
@Html.HiddenFor(model => model.ObjectType.Type);
@Html.HiddenFor(model => model.ObjectTypeID);
@Html.HiddenFor(model => model.TrashCans);
@Html.HiddenFor(model => model.TuristBedsNumber);
我不想写家居地址。我只想通过地址。我的收藏是ObjectOwners。我想做同样的事情。解决方案存在
编辑:我有Controller
和在它的方法ActionResult(AddressObject addressObject)
。在该控制器内部,我使用存储库调用unitOfWork
来保存该实体。我的 HiddenFors包装@HtmlBeginForm("Save", "AddressObject")
。当我将模型传递给控制器时,我的地址对象AddressObject.Address
是null = Count 0
。我希望能够通过引用的对象和集合传递整个对象,而无需为引用的对象或集合的所有属性编写hiddenfors。
EDIT2: 我已经掌握详细情况(这并不重要),文本框都绑定到AddressObject我查看模型。所以我有例如@ Html.TextBoxFor(m => m.AddressID)。问题是,当我改变例如AddressObject.TurisBedsNumber时,每个被引用的对象或集合都会变为null,并且因为我的AddressObject在从View传递到Controller时与我的更新属性不一致。我希望我的引用和其他属性像更新之前一样不变。我已经尝试过Mvc Futures和序列化整个对象,我的对象及其集合和引用对象都可以。问题是,当我反序列化我的对象时,该对象没有用新的TuristBedNumber属性更新;这是旧的价值。我想知道如何保存我的藏品和其他物品的状态。我可以使用HiddenFor帮助程序(太多属性写入)来保存状态,或者我可以从我的存储库获取AddressObject或Collection,并在控制器中更新它;再次,太多的属性。我希望能够说“嘿你收集和我参考的对象,你不会改变什么”。我想整个序列化它们,但只有它们。 有人问控制器,但它是常见的:
public ActionResult(AddressObject addressObject) { unitOfWork.Update(addressObject) }
是的,我有ValidState等....
可不可以给更多的环境?你想达到什么目的? –
已编辑的问题。 – Flipper
在您的控制器中传递模型之前,您应该通过Linq查询来正确请求它以检索“Adress”。如果您使用控制器更新您的问题,可能会更容易为您提供帮助 –