在我看来,我正在使用:
@model ALSummary.Models.MRecord
MRecord
有一个名为ACID
的属性,其中包含另一个名为ACInfo
的表的主键。
现在我的MRecord
模型是:
public partial class MRecord
{
public int ID { get; set; }
public System.DateTime DateEntered { get; set; }
public int ACID { get; set; }
public virtual ACInfo ACInfo { get; set; }
}
在MRecord
的创建视图中,我想显示ACID
表中的另一条信息,而不是显示ACInfo
。
原来的观点是:
<div class="form-group">
@Html.LabelFor(model => model.ACID, "ACID", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ACID, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.ACID, "", new { @class = "text-danger" })
</div>
</div>
但是我希望通过这样做来显示与ACID
对应的另一条信息:
<div class="form-group">
@Html.LabelFor(model => model.ACID, "ACID", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ACInfo.RegNum, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.ACID, "", new { @class = "text-danger" })
</div>
</div>
在我的HttpGet Create ActionResult
我创建了MRecord
的新实例,仅供参考:
public ActionResult Create(int? id)
{
MRecord newMRecord = new MRecord();
DateTime yesterday = DateTime.Today.AddDays(-1);
newMRecord.DateEntered = DateTime.Today.Date;
return View(newMRecord);
}
ACID
类int
的{{1}}如何等于RegNum
类型string
?还是不可能?
答案 0 :(得分:0)
您需要使用视图模型。它使处理情况像这样微不足道。基本上,您只需创建一个包含要在其上编辑的所有属性的类:
public class MRecordViewModel
{
public string ACInfoRegNum { get; set; }
}
然后,您只需在控制器操作中映射到此视图模型。例如:
var model = new MRecordViewModel
{
ACInfoRegNum = mrecord.ACInfo.RegNum
};
但是,不太清楚(以及您需要确定的内容)是您希望如何处理发布值。是应该更改RegNum
更新现有ACInfo
还是创建新的ACInfo
?那么,如果RegNum
已经存在ACInfo
,该怎么办?您是应该附加现有的ACID
实例还是仍然创建一个新实例?如果您想要更新,那么您还需要传递ACInfo
,这样您就可以获取现有的MRecord
实例并进行更新。如果您愿意,可以使用隐藏字段,或者只需查询ACInfo
新帖子并从那里获取RegNum
实例(这可能更好)。如果您想创建一个新的,并且您不想要重复的ACInfoRegNum
,那么您需要使用为MRecord
发布的值进行查询,然后将该实例附加到您的{{1}实例代替。