2014-11-25 4 views
1

У меня есть стандартная версия ASP.NET MVC, установленная с Visual Studio.ASP.NET MVC View (Razor) Работа с формами Проверка значений

В таял зрения у меня есть CompanyName textbox, который использует

@Html.EditorFor(model => model.CompanyName, new { htmlAttributes = new { @class = "form-control" } }) 

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

Надеюсь, этого достаточно информации.

+0

Можете ли вы разместить свой код, даже если он не работает? – elolos

+0

Я бы это сделал, но это всего лишь стандартный код, который создается лесами. Я играю со следующими –

+0

Что я имел в виду, вы что-то пробовали в действии контроллера, который не сработал? Если да, отправьте код. – elolos

ответ

0

Тип сценария, который вы используете, лучше всего обрабатывать в действии контроллера, который обрабатывает запрос POST, когда ваша форма отправляется. Например, если вы используете Entity Framework для сохранения в базе данных:

[HttpPost, ActionName("Edit")] 
[ValidateAntiForgeryToken] 
public ActionResult EditPost(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    var companyToUpdate = db.Companies.Find(id); 

    if (TryUpdateModel(companyToUpdate, "", 
      new string[] { "Name" })) 
    { 
     try 
     { 
      db.Entry(companyToUpdate).State = EntityState.Modified; 
      db.SaveChanges(); 

      return RedirectToAction("Index"); 
     } 
     catch (SomeException ex) 
     { 
      //Can also log the error 
      ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator."); 
     } 
    } 

    return View(companyToUpdate); 
} 

Обратите внимание, что запрос POST также могут быть отправлены по JavaScript.

Для получения дополнительной информации об этом, пожалуйста, взгляните на asp.net website.

0

Насколько я понял, вы можете сделать что-то вроде этого:

<script> 
    $(document).ready(function(){ 
     $("#CompanyName").change(function(){ 
     var textValue= $(this).val(); 

     //Call your function here: YourFunction(textValue); 

     $.ajax({ 
     type: 'GET', 
     url: 'ControllerName/ActionMethodName', 
     data: {textValue: textValue}, //Keep the same parameter name in C# function 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(result) 
     { 
     // To do on successful ajax call 
     }, 
     error: function(x,y,z) 
     { 
     alert("Ajax Error!"); 
     } 
     }); 

     }); 
    }); 
    </script> 

В C#, вы можете написать что-то вроде:

public class ControllerNameController : Controller 
{ 
    public JsonResult ActionMethodName(string textValue) 
    { 
     // To do your job here 
     return Json("succesful", JsonRequestBehavior.AllowGet); 
    } 
} 

Вы можете проверить это в jSFiddle here

+0

Отлично, Спасибо за это. Извините Старый программист оконных окон, пытаясь подняться до скорости с помощью MVC Stuff. Так можно ли назвать функцию C#? –

+0

@RamblingGeek: Да, вы можете сделать ajax-вызов функции C#. Пожалуйста, проверьте мой обновленный ответ выше. Если он решает вашу проблему, вы можете принять ответ и проголосовать. – Saket

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