2016-12-15 3 views
1

Я пытаюсь заполнить свои текстовые поля в моем проекте mvc, но у меня отсутствует то, что я не могу понять. В моем проекте у меня есть кнопка, после нажатия которой открывается всплывающая модель. В этой форме у меня есть два текстовых поля. Я хотел заполнить это, поэтому, когда я открываю текстовое поле формы, заполняется тем, что я хотел показать. Может ли кто-нибудь помочь, как я могу это сделать?Извлечение данных из базы данных в текст с помощью jquery

мой взгляд comtains (.asmx)

<table align="center"> 
     <tr> 
      <td valign="top" class="col-label"> 
       Header 
      </td> 
      <td class="col-label"> 
       <textarea id="header" name="header" cols="15" rows="2"></textarea> 
      </td> 
     </tr> 
     <tr> 
      <td valign="top" class="col-label"> 
       Footer 
      </td> 
      <td class="col-label"> 
       <textarea id="footer" name="footer" cols="15" rows="2"></textarea> 
      </td> 
     </tr> 
    </table> 

Мой контроллер

public ActionResult GetTempelateData(int locationId) 
    { 
     var area = _branches.GetById(locationId); 
     FormTemplate data = new FormTemplate(); 

     data.Header= ""; 
     data.Footer = ""; 

     string query = ""; 
     query = @"SELECT header, footer 
        from registration_center_template t 
         Inner Join company_template tc ON t.id = tc.template_id 
        where tc.location_id =" + locationId.ToString(); 
     using (SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["appdb"])) 
     { 
      connection.Open(); 

      using (SqlCommand command = new SqlCommand(query, connection)) 
      { 
       command.CommandTimeout = 3000; 
       using (SqlDataReader reader = command.ExecuteReader()) 
       { 
        while (reader.Read()) 
        { 
         data.Header = reader["header"].ToString(); 
         data.Footer = reader["footer"].ToString(); 
        } 
       } 
      } 
      connection.Close(); 
     } 
     return View("FormTemplate", data); 
    } 

Теперь, как я могу добавить JQuery, чтобы заполнить свои данные в текстовые поля?

+0

Перед понижая мой пост, пожалуйста, опишите, почему вы понижаем свой пост. –

+0

Что заставляет вас думать, что вам нужен jquery? Вы передаете модель в представление, поэтому просто привязывайтесь к своей модели - '@ Html.TextAreaFor (m => m.Header)' и ditto для 'Footer' –

ответ

0

Ну, во-первых, я бы не получил данные формы при нажатии кнопки, но в открывшемся событии «всплывающая модальная форма», если он есть. Если это не так, должна быть единственная функция, которая обрабатывает открытие модальности, и в этом случае данные формы GET должны передаваться в качестве функции обратного вызова.

Во-вторых, я не понимаю, почему здесь нужен AJAX. У вас постоянно меняется верхний и нижний колонтитулы?

Поэтому я представлю первую версию, которая, на мой взгляд, более уместна, и после этого решение AJAX. ** Кстати, я исправила Действие имя опечатка, и я использую Бритва MVC

1- Использование MVC (должно быть легко перевести asp.net)

@model FormTemplate 
<table align="center"> 
    <tr> 
     <td valign="top" class="col-label"> 
      Header 
     </td> 
     <td class="col-label"> 
      @Html.TextAreaFor(model => model.Header, new { cols = 15, rows = 2 }) 
     </td> 
    </tr> 
    <tr> 
     <td valign="top" class="col-label"> 
      Footer 
     </td> 
     <td class="col-label"> 
      @Html.TextAreaFor(model => model.Footer, new { cols = 15, rows = 2 }) 
     </td> 
    </tr> 
</table> 

Я полагаю, ваше мнение называется FormTemplate, и в этом случае вы уже передаете модель на свое действие GetTemplateData.

2- Использование JQuery AJAX

Модель

// This should actually be on a repository class 
public static FormTemplate GetFormTemplateById(int locationId) 
{ 
    string query = 
      @"SELECT header, footer 
       from registration_center_template t 
        Inner Join company_template tc ON t.id = tc.template_id 
       where tc.location_id =" + locationId; 
    using (SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["appdb"])) 
    { 
     connection.Open(); 

     using (SqlCommand command = new SqlCommand(query, connection)) 
     { 
      command.CommandTimeout = 3000; 
      using (SqlDataReader reader = command.ExecuteReader()) 
      { 
       return reader.Read() 
        ? new FormTemplate 
         { 
          Header = reader["header"] as string, 
          Footer = reader["footer"] as string 
         } 
        : new FormTemplate(); // could also be null - preference; 
      } 
     } 
    } 
} 

Контроллер

public JsonResult GetTemplateData(int locationId) 
{ 
    return Json(FormTemplate.GetTemplateById(locationId), JsonRequestBehavior.AllowGet); 

    // if FormTemplate returns null, your javascript will fail 
    // could use FormTemplate.GetTemplateById(locationId) ?? new FormTemplate() 
    // or on JavaScript: if (!response) return; 
} 

JavaScript

$.get('@Url.Action("GetTemplateData", "Admin")', 
     { locationId: @ViewData["locationID"] } 
     // locationID must be an int or this will fail, either silently or explicitly 
) 
    .done(function (response) { 
     // if your model can be null, use: 
     // if (!response) return; 
     $('#header').val(response.Header); 
     $('#footer').val(response.Footer); 
    }); 
+0

Возможно, есть возможность изменить верхний и нижний колонтитулы. Именно по этой причине я предоставляю таким образом, если для добавления в верхний и нижний колонтитулы изменения необходимо добавить функциональность, которую можно добавить. –

+0

Если требуется обновление верхнего и нижнего колонтитула, будет ли использоваться этот код? Мне просто нужно добавить инструкцию обновления для обновления в базе данных. Просто FYI, мой взгляд в asmx не cshtml. –

+0

В случае, если AJAX не используется, все, что требуется, это простая перезагрузка страницы для обновления данных заголовка и нижнего колонтитула. Я знаю, что это так, но у меня нет доступа к Visual Studio прямо сейчас, и я не помню, как писать asmx, поэтому я надеюсь, что вы сможете перевести часть Razor. – rabelloo

Смежные вопросы