CheckBox Доступ к базе данных в MVC3 - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть таблица экспертизы, которая содержит поля «код» и «описание». В этой таблице около 20 строк.

Я хочу, чтобы 20 флажков имели описание из таблицы опыта, чтобы пользователь мог установить столько флажков, сколько он хочет, и после отправки кнопки он должен взять «код» из таблицы опыта и отправить его в базу данных. .

Как я могу это сделать? может кто-нибудь дать мне пошаговый способ сделать это в MVC3

В моей модели у меня есть следующее:

public class RegisterModel
{
    [StringLength(20, ErrorMessage = "{0} must be at least {2} characters long and a maximum of {1} characters with no spaces.", MinimumLength = 6)]
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "Email address")]
    public string Email { get; set; }

    [Required]
    [StringLength(20, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }

    [Display(Name = "UserPhone")]
    public string userPhone { get; set; }


 public class ExpertiseModel
 {
     public string expertiseCode { get; set; }

     public string expertiseDesc { get; set; }
 }

 public class UserExpertiseModel
 {
     public string expertiseCode { get; set; }

     public string otherExpertise { get; set; }
 }


 public class RegisterSPModel
 {
     UserExpertiseModel userexpertisemodel;
     RegisterModel registermodel;

     public RegisterSPModel()
     {
         userexpertisemodel = new UserExpertiseModel();
         registermodel = new RegisterModel();
     }
 }

В моем контроллере у меня есть:

    // GET: /Account/RegisterSP
    public ActionResult RegisterSP()
    {
        DBController dbcontroller = new DBController();

        if (dbcontroller.DBConnection())
        {
            MySqlCommand command = new MySqlCommand("view_all_expertise;", dbcontroller.conn);
            command.CommandType = System.Data.CommandType.StoredProcedure;

            command.Parameters.Add(new MySqlParameter("expertiseCode", MySqlDbType.String));
            command.Parameters["@expertiseCode"].Direction = System.Data.ParameterDirection.Output;

            command.Parameters.Add(new MySqlParameter("expertiseDesc", MySqlDbType.String));
            command.Parameters["@expertiseDesc"].Direction = System.Data.ParameterDirection.Output;

            try
            {
                MySqlDataReader rdr = command.ExecuteReader();

                var expmodel = new ExpertiseModel();                  

                while (rdr.Read())
                {
                    expmodel.expertiseCode = rdr["expertiseCode"].ToString();
                    expmodel.expertiseDesc = rdr["expertiseDesc"].ToString();
                }

                ViewBag.Expertise = expmodel;
                return View();
            }

И в моем ВИДЕ у меня есть это: @model mvc1.Models.RegisterSPModel

@{
    ViewBag.Title = "RegisterSP";
 }

 @using (Html.BeginForm()) {

 <p>
     Use the form below to continue creating a new account. 
 </p>

 <div>
 <fieldset style = "width: 840px; margin:  0px auto;">
 <legend>Account Information - Service Provider</legend>
 <br />
      @foreach (var item in ViewBag.Expertise)
      {
          <div>
          <table>
          <tr>
          <td>
              <input type="checkbox" name="codes"   value="@item.Expertise.expertiseDesc" />
          </td>
          </tr>
          </table>
          </div>
      }

Это не работает .. Я не могу получить поля данных RegisterSPModel в VIEW (), хотя он указан в начале VIEW.

1 Ответ

0 голосов
/ 04 апреля 2012

Я предполагаю, что у вас есть следующая модель:

@model IEnumerable<YourProject.Models.Expertise>

все, что вам нужно сделать, это поместить вашу таблицу в @html.beginForm и добавить checkbox в каждую строку. и установите значение checkBox to "code"

пример:

 @using (Html.BeginForm())
 {
     @foreach (var x in Model)
        {        
          <div>
               <table>     
                  <tr>
                    <td>
                      <input type="checkbox" name="codes" value="@x.code"  /> 
                    </td>
                    ... // rest of your table

и затем в вашем контроллере добавьте метод записи для страницы:

 [HttpPost, ActionName("Index")]
 public ActionResult IndexPost(List<CTypeofCode>codes)
 {
   // codes is going to be the list of what the user selected.
   // now you are ready to do what ever you need to do with the users selection
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...