问题
I'm trying to render a partial view inside a form, I need to use the value of the loop (+1 of course because it starts at 0) as one of the values in my partial, any ideas how I can make this work?
I've tried to do this with ViewData or ViewBag but either this is the wrong method or I'm implementing it wrong
Here is my main form:
@model Measurement
<form asp-action="Create" method="post">
<div class="form-group" hidden>
<label asp-for="LymphSiteId"></label>
<input asp-for="LymphSiteId" value=@ViewBag.Id />
<span asp-validation-for="LymphSiteId"></span>
</div>
<div class="form-group" hidden>
<label asp-for="UserId"></label>
<input asp-for="UserId" value="1" />
<span asp-validation-for="UserId"></span>
</div>
<div class="form-group">
<label asp-for="MeasurementDate"></label>
<input asp-for="MeasurementDate" />
<span asp-validation-for="MeasurementDate"></span>
</div>
@for (int i = 0; i < ViewBag.NumMeasuringPoints; i++)
{
<partial name="_New" view-data=@(i+1) />
}
<button type="submit">Submit</button>
</form>
Here is my partial:
@model Circumference
<div class="form-group" hidden>
<input asp-for="Id" />
</div>
<div class="form-group" hidden>
<input asp-for="MeasurementId" value="@ViewBag.Id" />
</div>
<div class="form-group">
<label asp-for="PositionFromStart">Position from Start</label>
<input asp-for="PositionFromStart" value="@ViewData" />
</div>
<div class="form-group">
<label asp-for="DistanceAround">Circumference at point (cm)</label>
<input asp-for="DistanceAround" />
</div>
Any help greatly appreciated - thanks!
回答1:
I'm trying to render a partial view inside a form, I need to use the value of the loop (+1 of course because it starts at 0) as one of the values in my partial, any ideas how I can make this work?
You can try to modify the code like below to assigns a ViewDataDictionary to pass to your partial view.
In main form
@for (int i = 0; i < ViewBag.NumMeasuringPoints; i++)
{
ViewData["PositionFromStart"] = i + 1;
var pmodel = new Circumference();
<partial name="_New" model="pmodel" view-data="ViewData" />
}
In partial view
@model Circumference
<div class="form-group" hidden>
<input asp-for="Id" />
</div>
<div class="form-group">
<input asp-for="MeasurementId" value="@ViewBag.Id" />
</div>
<div class="form-group">
<label asp-for="PositionFromStart">Position from Start</label>
<input asp-for="PositionFromStart" value="@ViewData["PositionFromStart"]" />
</div>
<div class="form-group">
<label asp-for="DistanceAround">Circumference at point (cm)</label>
<input asp-for="DistanceAround" />
</div>
来源:https://stackoverflow.com/questions/59990186/how-to-pass-a-value-into-partial-tag-helper-asp-net-core