在内部的一个mvc的项目中,视图中负责显示model数据,在视图中有一个button按钮,点击这个按钮调用controller中的方法,现在controller的方法中需要接收一个model中的数据作为参数,目前发现有2中办法:
方法1:将参数作为form表单参数参地,参数隐藏
视图:
<div class="container">
<form id="action1Form" action="/PublishToCenter/Upload" method="post">
<div class="form-group">
<label for="publishdes">版本发布说明:</label>
<textarea id="publishdes" name="publishdes" rows="4" cols="80" style="text-align:left;">
修复已知问题
</textarea>
<input type="hidden" name="dependProductId" value="@Model.DependVersionId"/>
</div>
</form>
<div class="btn-group" style="margin-top:10px;" role="group" aria-label="Button group with different actions">
<button type="submit" form="action1Form" class="btn btn-primary">仅上传文件但不发布</button>
</div>
</div>
controller:
[HttpPost]
public async Task<IActionResult> UploadAsync([FromForm]string publishdes, [FromForm] string dependProductId)
{
//处理代码
return RedirectToAction("IndexNew");
}
方法2:直接讲参数作为query参数传递
视图:
<div class="container">
<form id="action1Form" action="/PublishToCenter/Upload?dependProductId=@Model.DependVersionId" method="post">
<div class="form-group">
<label for="publishdes">版本发布说明:</label>
<textarea id="publishdes" name="publishdes" rows="4" cols="80" style="text-align:left;">
修复已知问题
</textarea>
</div>
</form>
<div class="btn-group" style="margin-top:10px;" role="group" aria-label="Button group with different actions">
<button type="submit" form="action1Form" class="btn btn-primary">仅上传文件但不发布</button>
</div>
</div>
controller:
[HttpPost]
public async Task<IActionResult> UploadAsync([FromForm]string publishdes, [FromQuery] string dependProductId)
{
//处理代码
return RedirectToAction("IndexNew");
}
总结:
如果数据本身需要在form表单中显示,那么采用方法1;反之则采用方法2。
疑问
由于是一个初学者,现在遇到一个问题,这个参数现在在form表单外显示,如何不采用上面的2个方法也能够将参数传递进去呢 ?大家有好的方案,可以留言。
<div class="row" style="background-color:burlywood">
<div class="col-2">
<span class="row-cols-2">依赖产品版本ID:</span>
<span name="dependVersionId" class="row-cols-2">@Model.DependVersionId</span>
</div>
<div class="col-6">
<span class="row-cols-2">依赖产品版本号:</span>
<span class="row-cols-2">@Model.DependVersion</span>
</div>
</div>
<div class="container">
<form id="action1Form" action="/PublishToCenter/Upload" method="post">
<div class="form-group">
<label for="publishdes">版本发布说明:</label>
<textarea id="publishdes" name="publishdes" rows="4" cols="80" style="text-align:left;">
修复已知问题
</textarea>
</div>
</form>
<div class="btn-group" style="margin-top:10px;" role="group" aria-label="Button group with different actions">
<button type="submit" form="action1Form" class="btn btn-primary">仅上传文件但不发布</button>
</div>
</div>
如何能够直接获取dependVersionId这个span的值传递到upload方法中呢?