Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从URL获取参数并将其放入输入控件的简单方法?_C#_Asp.net Mvc 3_Url_Parameters_Input - Fatal编程技术网

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?