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

时间:2015-07-15 02:41:43

标签: c# asp.net database registration

我正在构建一个包含两种不同类型用户的网站应用程序,让我们调用一个A,另一个是B。它们有一些类似的数据,例如:'name','password'等,其余的则不同。我已经分别为他们做了两张桌子,因为我需要它,但我有一个想法,我不确定我是否可以做到!

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

我正在使用C#中的ASP.NET,我想知道这个想法是否适用?我的问题在于复选框 - 如何根据他们选择的内容显示其余的注册表单,然后将其添加到正确的表格中?

2 个答案:

答案 0 :(得分:3)

MVC?

2个选项:

您的html中都有两个表单,其中属性ID ='形成','表单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
&#13;
&#13;
&#13;

另外,如果您想要显示表单,请不要显示:none 在用户做出选择之前,表单内部设置为不显示。

-

OR

使用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);
    }

在控制器中提交表单后。像往常一样坚持DB。

另外请使用@using(Html.BeginForm)而不是表单标签。你可以在这里找到很多相关信息。

答案 1 :(得分:1)

就像@Fel在评论中说的那样,

你最好使用单选按钮,

将它们称为rb1和rb2,将单选按钮分组给它们一个相同的组名。

同时为两者提供 AutoPostBack =&#34; True&#34; ,这样只有在检查无线电按钮时才能更改其余字段。

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

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

点击“提交”按钮

if(rb1.checked = true)

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

希望这有助于...... 所有最好的......