![](/img/trans.png)
[英]Passing data from Partial View to its parent View in asp.net core mvc
[英]Passing data from View to Controller and back to the same View ASP Net Core MVC
嗨,我不知道如何將簡單數據從視圖傳遞到控制器,我需要為更新同一個視圖生成值,讓我展示代碼以便更好地理解。 我想添加包含患者、醫生和訪問日期(日期和小時)的訪問,因此在創建頁面中我得到了代碼:
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="PatientId" class="control-label"></label>
<select asp-for="PatientId" class="form-control" asp-items="ViewBag.PatientId"></select>
</div>
<div class="form-group">
<label asp-for="DoctorId" class="control-label"></label>
<select asp-for="DoctorId" id="iddoctor" class="form-control" asp-items="ViewBag.DoctorId" onchange="go()">
</select>
</div>
<div class="form-group">
<label asp-for="date" class="control-label"></label>
<input asp-for="date" class="form-control" />
<span asp-validation-for="date" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="date" class="control-label"></label>
<select asp-for="date" class="form-control" asp-items="ViewBag.date"></select>
</div>
我從日歷中選擇病人、醫生和日期,我想把它發送到控制器,它應該生成可用時間列表,放在 ViewBag.date 的同一頁面中,這樣我也可以選擇時間並通過單擊“添加訪問”完成添加訪問
我的控制器創建功能
public IActionResult Create()
{
ViewData["DoctorId"] = new SelectList(_context.Doctors, "DoctorId", "Surname" );
ViewData["PatientId"] = new SelectList(_context.Patients, "PatientId", "Surname" );
return View();
}
編輯:下面我的答案中的解決方案
我從日歷中選擇病人、醫生和日期,我想把它發送到控制器,它應該生成可用時間列表,放在 ViewBag.date 的同一頁面中,這樣我也可以選擇時間並通過單擊“添加訪問”完成添加訪問
為了達到要求,您可以嘗試為hour
信息定義一個新屬性,如下所示。
public class VisitViewModel
{
public int PatientId { get; set; }
public int DoctorId { get; set; }
[DataType(DataType.Date)]
public DateTime date { get; set; }
public string hour { get; set; }
}
更新視圖代碼以綁定hour
字段
@model VisitViewModel
@{
ViewData["Title"] = "Create";
}
<h1>Create</h1>
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="PatientId" class="control-label"></label>
<select asp-for="PatientId" class="form-control" asp-items="ViewBag.PatientId"></select>
</div>
<div class="form-group">
<label asp-for="DoctorId" class="control-label"></label>
<select asp-for="DoctorId" id="iddoctor" class="form-control" asp-items="ViewBag.DoctorId" onchange="go()">
</select>
</div>
<div class="form-group">
<label asp-for="date" class="control-label"></label>
<input asp-for="date" class="form-control" />
<span asp-validation-for="date" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="hour" class="control-label"></label>
<select asp-for="hour" class="form-control" asp-items="ViewBag.date"></select>
</div>
<input type="submit" value="Create" />
</form>
在操作方法中,根據選定的日期和小時生成新的日期時間。
public IActionResult Create(VisitViewModel visit)
{
var date = visit.date.ToShortDateString();
var newdate = Convert.ToDateTime(date + " " + visit.hour);
//...
//code logic
//...
測試結果
好的,我自己找到了解決方案。 我替換了我視圖中的最后一個 div :
<div class="form-group">
<label asp-for="hour" class="control-label"></label>
<select asp-for="hour" class="form-control" asp-items="ViewBag.hour">
</select>
</div>
接下來,我添加了功能“goes”到更改事件到醫生列表和日歷
<select asp-for="DoctorId" id="iddoctor" class="form-control" onchange= "goes()" asp-
items="ViewBag.DoctorId">
在goes()
函數中有代碼:
$.ajax({
url: '@Url.Action("Updatedata", "Visits")',
dataType: "json",
data: { x, data: y} ,
success: function (data) {
var items = data;
var item = "";
var itemss
for (var i = 0; i < items.length; i++) {
item = items[i];
item = item.replace("0001-01-01T", "").slice(0, -3);
itemss += "<option value='" + item + "'>" + item + "
</option>"
}
$('#hour').html(itemss);},});}};
我在其中發送選定的醫生 ID 和選定的日期以在 VisitsController 中運行“updatedata”,這會返回可用時間列表。 我希望有人會發現這個解決方案很有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.