C# 从URL获取参数并将其放入输入控件的简单方法?
我正在制作一个邀请系统,用户在注册网站时可以指定一个推荐他们的用户 还有一种方法可以让现有用户发送邀请。朋友将收到一个链接:C# 从URL获取参数并将其放入输入控件的简单方法?,c#,asp.net-mvc-3,url,parameters,input,C#,Asp.net Mvc 3,Url,Parameters,Input,我正在制作一个邀请系统,用户在注册网站时可以指定一个推荐他们的用户 还有一种方法可以让现有用户发送邀请。朋友将收到一个链接: http://www.foo.com/account/register?referal=sandyUser216 如何获取该值sandyUser216,并将其作为文本输入框中的值 我正在使用C#和MVC3。检查请求。QueryString <input type="text" value="@Request.QueryString["referal"]" />
http://www.foo.com/account/register?referal=sandyUser216
如何获取该值sandyUser216
,并将其作为文本输入框中的值
我正在使用C#和MVC3。检查
请求。QueryString
<input type="text" value="@Request.QueryString["referal"]" />
或者将其放在模型属性中,而不是将其放在视图中。在ASP.NET MVC应用程序中,您首先要编写一个视图模型来表示视图中包含的信息:
public class RegisterViewModel
{
[Required]
public string Referal { get; set; }
}
然后编写控制器操作,分别显示注册表和处理注册表:
public ActionResult Register(RegisterViewModel model)
{
return View(model);
}
[HttpPost]
[ActionName("Register")]
public ActionResult ProcessRegistration(RegisterViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
// TODO: perform the registration
return RedirectToAction("success");
}
最后编写相应的强类型视图:
@model RegisterViewModel
@using (Html.BeginForm())
{
@Html.LabelFor(x => x.Referal)
@Html.EditorFor(x => x.Referal)
@Html.ValidationMessageFor(x => x.Referal)
<button type="submit">Register</button>
}
@model RegisterViewModel
@使用(Html.BeginForm())
{
@LabelFor(x=>x.refereal)
@EditorFor(x=>x.refereal)
@Html.ValidationMessageFor(x=>x.Referal)
登记
}
现在只需导航到/account/register?referal=sandyUser216
您已经完成了整个MVC模式。如果您跳过这三个字母中的任何一个,则表示您的ASP.NET MVC操作不正确。如果用户未单击推荐电子邮件而直接转到注册表,会发生什么情况?@Sergio Tapia,您可以在Register GET action中检查模型是否有效:
如果(!ModelState.IsValid){…
。如果modelstate无效,您将知道视图模型的refereal属性未传递,您可以采取相应的操作,例如抛出403 Unauthorized或404notfound,这当然取决于您的要求。访问URL时,不会填写参数。我应该检查什么?您是否在查询字符串/account/register?referal=sandyUser216
中传递它,并且在视图模型中命名属性时没有犯一些愚蠢的错误,而且它与查询字符串参数的名称不同。这些是我检查的第一件事。也许是因为我在用EditorFor?