我的控制器中的代码:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult CreateRedBlood(Donor donor)
{
if (ModelState.IsValid)
{
//create
Blood newBlood = new Blood();
if(donor != null)
{
DateTime todaysdate = DateTime.Now;
newBlood = new Blood("RBC", donor.ID);
}
_context.Blood.Add(newBlood);
_context.SaveChanges();
我视图中的代码:
<form asp-action="CreateRedBlood" method="post">
<div class="form-horizontal">
<h4>Make Donation</h4>
<hr />
<div class="form-group">
<input type="submit" value="Make Red Blood Cell Donation"class="btn btn-default" />
</div>
</div>
</form>
在使用此表单之前,页面已从控制器获取FullDonorDetails,并使用model.donor.x获取所有有用的信息。
我想要做的是将model.donor传递回此表单,这样当按下按钮时,它会获取所有方便的信息并将其直接放回CreateRedBlood。
有什么想法吗? 谢谢!
编辑:Shyju要求以下内容。这是我正在使用的索引控制器来获取fullDonorDetails。 public IActionResult Index(string searchString)
{
FullDonorDetails fullDonorDetails = new FullDonorDetails();
//Get Donor
Donor emptyDonor = new Donor();
Donor activeDonor = new Donor();
if (!string.IsNullOrEmpty(searchString)
&& searchString.Length == 10)
{
activeDonor = _context.Donor.Single(m => m.NHN == searchString);
if (activeDonor != null)
{
fullDonorDetails.Donor = activeDonor;
}
else
{
fullDonorDetails.Donor = emptyDonor;
}
}
else
{
fullDonorDetails.Donor = emptyDonor;
}
//Get History
List<Blood> donorBloodHistory = new List<Blood>();
if (activeDonor != emptyDonor)
{
//RedBlood
var BloodHistory = from r in _context.Blood
select r;
BloodHistory = BloodHistory.Where(s => s.DonorId.Equals(activeDonor.ID));
foreach (Blood currentBlood in BloodHistory)
{
donorBloodHistory.Add(currentBlood);
}
List<Blood> sortedList = donorBloodHistory.OrderBy(o => o.DateTaken).ToList();
sortedList.Reverse();
fullDonorDetails.DonorHistory = sortedList;
}
return View(fullDonorDetails);
}
答案 0 :(得分:2)
由于您的HttpPost操作方法只读取Donor类的ID
属性(这是HttpPost操作方法的参数),因此您应该将该属性值保留在具有相同名称的表单字段中({{ 1}})。
ID
现在,当用户提交表单时,您的HttpPost操作方法的参数将具有捐赠者ID的值(您在GET操作中设置)。