我有简单的视图模型:
public class GogViewModel
{
[Required]
public string Name { get; set; }
public bool IsBeta { get; set; }
public string Result { get; set; }
}
和控制器:
[HttpGet]
public IActionResult Index()
{
return View(new GogViewModel());
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Index(GogViewModel model)
{
if (ModelState.IsValid)
{
model.Result = DoSomething();
}
return View(model);
}
并查看:
@model GogViewModel
<div>
<form method="post">
@Html.AntiForgeryToken()
<div class="form-group row">
<label class="col-sm-2 col-form-label" asp-for="Name">Release name</label>
<div class="col-sm-10">
<input type="text" class="form-control" asp-for="Name" placeholder="paste release name here" />
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label" asp-for="Result">Result</label>
<div class="col-sm-9">
<input type="text" class="form-control-plaintext" readonly="readonly" asp-for="Result" />
<p>@Model.Result</p> <!-- it works here means the value is printed -->
</div>
<div class="col-sm-1">
<button type="button" class="btn btn-outline-info copy float-right" data-target="Result"><i class="far fa-copy"></i></button>
</div>
<div class="clearfix"></div>
</div>
<input type="submit" class="btn btn-success" value="Fix it" />
</form>
</div>
以某种方式在POST请求后不输出结果。
为什么?我的错误在哪里?
答案 0 :(得分:0)
它将以以下方式工作:
Result
属性=> public string Result {get; private set;}
internal void SetResult(string result) { Result = result; }
SetResult
来呼叫model.SetResult(...);
,并且将在只读输入中显示。我不知道它为什么起作用,我也不知道为什么将其输入时会清除该值。
我使用具有readonly属性的输入,以便使用javascript复制输出值。
答案 1 :(得分:0)
也许您需要在输入标记中添加诸如value =“ @ Model.Result”之类的内容?