我有这样的剃刀形式
@using (Html.BeginForm("ResetPassword", "Login", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div id="email_label" style="font-size:14px;padding:8px;">Email:</div>
<div class="form-group">
@Html.EditorFor(x => x.user, new { htmlAttributes = new { @class = "form-control", placeholder = "enter email from url" } })<br />
@Html.ValidationMessageFor(x => x.user)
</div>
}
我想将placeholder = "enter email from url"
替换为网址中的值。
url:example.com/login?email=hi@example.com&pass=123
现在我在Javascript中这样做,但我想在Razor中这样做。但我似乎无法到达任何地方。
以下是我在Javascript中所做的事情:
let url = new URL(window.location.href);
let searchParams = new URLSearchParams(url.search);
let emailAddress = (searchParams.get('email'));
答案 0 :(得分:0)
您可以从Request
读取查询字符串并使用它
@Html.EditorFor(x => x.user,
new { htmlAttributes = new { @class = "form-control",
placeholder = Request["email"] ?? "Please enter email" } })
这将读取电子邮件查询字符串值(如果它作为占位符值存在),否则字符串“请输入电子邮件”
这只会添加占位符文本,而不是输入的实际值。如果您希望将其设置为输入元素值,则可以在GET操作方法中执行此操作。
public ActionResult ResetPassword(string email)
{
var vm = new ResetPasswordVm { User = email };
return View(vm);
}
并且在渲染输入时辅助方法将使用此值