ASP.在一个注册表单中注册的两种类型的用户

本文关键字:注册 两种 类型 用户 表单 注册表 一个 ASP | 更新日期: 2023-09-27 18:02:47

我正在构建一个网站应用程序,将有两种不同类型的用户,让我们称一个为A,另一个为B。它们有一些相似的数据,如:"姓名"、"密码"等,其余的则不同。我已经分别为他们做了2张表,因为我需要这样做,但我有一个想法,我不确定我是否能做到!

这个想法是,当用户进入注册页面时,他们将显示一个包含AB之间类似数据的注册表单,然后我将让用户选中一个复选框,表明它是A用户还是B用户。根据他们选择的内容,表单的其余部分将显示在同一页面中,以便他们继续注册。

我正在用ASP工作。. NET中的c#,我想知道这个想法是否适用?我的问题是与复选框-我如何让注册表单的其余部分显示取决于他们所选择的,然后将其添加到正确的表?

ASP.在一个注册表单中注册的两种类型的用户

MVC?

2选项:

在你的html中有两个表单,属性ID = 'form a', 'form b'。确保将表单提交给不同的操作。

$('.radioBtn').click(function() {
  var formType = $(this).val();
  //alert(formType);
  if (formType == "A") {
    $('#FormA').show();
    $('#FormB').hide();
  } else {
    $('#FormB').show();
    $('#FormA').hide();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<form style="display: none" id="FormA" action="/actionA">
  .... your html FORM A
</form>
<form style="display: none" id="FormB" action="/actionB">
  .... your html FORM B
</form>
<input type="radio" name="typeOfForm" class="radioBtn" value="A">Form A
<input type="radio" name="typeOfForm" class="radioBtn" value="B">Form B

另外,如果你想显示表单,不要使用display:none在表单内部有一个,它被设置为不显示,直到用户做出选择。

,

使用ajax,将表单作为部分视图,并在单击单选后将其上传到目标div中。(如有需要请告知)

我认为第一次展示/隐藏对你来说已经足够了。没有理由上传,因为表单只是一组空的输入。

编辑

接下来,我们在控制器中捕获这些提交的表单。每个表单将提交到相同的操作,或者您希望不同的操作,这没有区别-您的偏好。

选项1。页面上的表单:

 <form action='@Url.Action("YourRegisterAction", "controller")' >
    <input type="hidden" name="FormType" value="A"/> <!--place B for B form-->
    <input type="text" name="Name" placeholder ="enter your name"/>
    <input type="text" name="Password" placeholder ="enter your name"/>
    <input type="submit" value="Register Me!"/>
 </form>
控制器

    [HttpPost]
    public ActionResult YourRegisterAction(char formType, string name, string password)
    {
        if (formType == 'A')
            bool success = BL.Server.Instance.SaveMyNewUserToDBTypeA(name, password);
        else if (formType == 'B')
            bool success = BL.Server.Instance.SaveMyNewUserToDBTypeB(name, password);
        return View("ThankYou", success);
    }

选项2。使用模型。模型

        public class YourRegisterAction
    {
        public string  Name { get; set; }
        public string Password { get; set; }
        public char FormType { get; set; }
    }

视图
@model Domain.UI.Models
<form action='@Url.Action("YourRegisterAction", "controller")' >
    @Html.HiddenFor(m=>m.FormType)
    @Html.TextBoxFor(m=>m.Name)
    @Html.TextBoxFor(m=>m.Password)
<input type="submit" value="Register Me!"/>
</form>
控制器

        [HttpPost]
    public ActionResult YourRegisterAction(RegisterViewModel m)
    {
        if (m.FormType == 'A')
            bool success = BL.Server.Instance.SaveMyNewUserToDBTypeA(m.Name, m.Password);
        else if (m.FormType == 'B')
            bool success = BL.Server.Instance.SaveMyNewUserToDBTypeB(m.Name, m.Password);
        return View("ThankYou", success);
    }

在您的控制器中有提交的表单之后。只需像往常一样在数据库中持久化即可。

也请使用@using (Html.BeginForm)代替表单标签。你可以在这里找到很多相关信息

就像@Fel在评论中说的,

你最好使用单选按钮,

将它们命名为rb1和rb2,通过给它们一个相同的组名对它们进行分组。

和也给AutoPostBack="True"为两者,所以只有你可以改变其余的字段,而单选按钮被选中。

分别为两个用户创建其余的表单,作为面板p1为A, p2为B

在rb1_checkedchanged事件中,显示p1,在rb2_checkedchanged事件中,显示p2

当点击Submit按钮

如果(rb1.checked = true)

显示A的形式;将其存储在a的表中;其他的B的显示形式;

希望这有助于…祝一切顺利!