我有一个其中带有外键列的模型,对此外键列有疑问。
我的模型如下:
public partial class MaterialDetail
{
public MaterialDetail()
{
this.StockRecords = new HashSet<StockRecord>();
}
public int ID { get; set; }
public int MaterialTypeId { get; set; }
public string SerialNumber { get; set; }
public string SerialNumberOne { get; set; }
public int BillId { get; set; }
public bool IsIssued { get; set; }
public int RegisterId { get; set; }
public virtual Bill Bill { get; set; }
public virtual MaterialCategory MaterialCategory { get; set; }
public virtual ICollection<StockRecord> StockRecords { get; set; }
public virtual Register Register { get; set; }
}
怀疑与外键RegisterId
有关。我有一个表单可以输入材料的详细信息,这些详细信息引用了表中的RegisterId
。在视图中,我有一个RegisterId
的隐藏类型,但是我没有在模型中传递它的值,但是当我使用inspect元素检查它时,它仍然显示在视图中。另外,当我在输入详细信息后提交表单时,RegisterId
的值应到达控制器,因为它在浏览器中显示,但没有到达那里。
任何人都可以解释这种行为。
这两个动作的代码如下:
public actionResult AddHardware(int? registerId)
{
try
{
if (registerId == null)
{
return RedirectToaction("All");
}
else
{
string registerName = db.Registers.Where(m => m.RegisterId == registerId).Select(m => m.RegisterName).SingleOrDefault();
ViewBag.registerName = registerName;
ViewBag.MaterialTypesDDl = db.MaterialCategories.OrderBy(o => o.ID).ToList();
ViewBag.BillNumberDDL = db.Bills.OrderBy(o => o.ID).ToList();
return View();
}
}
catch (Exception)
{
throw;
}
}
,用于过帐表格的数据是:
[HttpPost]
public actionResult AddHardware(MaterialDetail obj)
{
var result = new jsonmessage();
try
{
obj.IsIssued = false;
obj.RegisterId = obj.RegisterId;
db.MaterialDetails.Add(obj);
db.SaveChanges();
//result.Message = "Register entry successfull";
result.Status = true;
}
catch (Exception ex)
{
ErrorLogers.ErrorLog(ex);
result.Message = "Application is unable to process your request";
result.Status = false;
throw;
}
return Json(result,JsonRequestBehavior.AllowGet);
}