2014-11-25 44 views
1

我有用Visual Studio安裝的標準ASP.NET MVC版本。ASP.NET MVC視圖(Razor)使用表格檢查值

在thew鑑於我有一個公司名稱textbox這是使用

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

我想什麼做的是抓住文本框中的值,然後調用一個函數的值保存到另一臺。如果價值已經改變,我也只想要這個。

我希望這是足夠的信息。

+0

即使它不工作,你可以請你發佈你的代碼嗎? – elolos 2014-11-25 11:51:22

+0

我會,但它只是由腳手架生成的標準代碼。 我一直在玩下面的 – 2014-11-25 11:55:32

+0

我的意思是,你有沒有在控制器操作中嘗試過一些沒有用的東西?如果是,請發佈代碼。 – elolos 2014-11-25 12:06:28

回答

0
檢查

您所處的場景類型最好在處理表單提交時處理POST請求的控制器操作中處理。例如,假設你使用實體框架來保存到數據庫:

[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的東西速度。那麼我可以調用一個C#函數嗎? – 2014-11-25 12:33:35

+0

@RamblingGeek:是的,你可以調用一個C#函數的ajax。請檢查我上面更新的答案。如果它解決了你的問題,你可以接受答案並投票。 – Saket 2014-11-25 13:20:00