English 中文(简体)
Ajax Post-MVC3
原标题:Updating View with Model changes via Ajax Post - MVC3

我正试图利用Ajax(我认为)呼吁更新我的模型价值,然后把这一新价值反映在这一看法中。 我现在只是为了测试目的。

概述:

public class MyModel
{
    public int Integer { get; set; }
    public string Str { get; set; }
}

http://www.ohchr.org。

    public ActionResult Index()
    {
        var m = new MyModel();
        return View("Test1", m);
    }

    [HttpPost]
    public ActionResult ChangeTheValue(MyModel model)
    {
        var m = new MyModel();
        m.Str = model.Str;
        m.Str = m.Str + " Changed! ";
        m.Integer++;

        return View("Test1", m);

    }

http://www.ohchr.org。

  @model Test_Telerik_MVC.Models.MyModel
@using Test_Telerik_MVC.Models
@{
    ViewBag.Title = "Test1";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
    Test1</h2>
@if (false)
{
    <script src="~/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
    <script src="~/Scripts/jquery-ui.min.js" type="text/javascript"></script>
}
<h2>
    ViewPage1
</h2>

<div>
    <input type="button" onclick="changeButtonClicked()" id="changeButton" value="Click Me!" />
    <input type="text" value="@Model.Str" class="txt" id="str" name="Str"/>
    <div></div>
</div>

<script type="text/javascript">

    function changeButtonClicked() {
        var url =  @Url.Action("ChangeTheValue", "Test1") ;
        var data =  @Model ;
        $.post(url, data, function (view) {
            $("#Str").value =  @Model.Str ;
        });
    }

</script>

基本上,这种观点使纽托有一个文本箱。 我的唯一目的是简单地在文本箱中展示我的模型(Str Property)的价值。

我尝试了改变ButtonClicked()功能的各种组合,但没有结果。 测试1是我的控制者的名字。 我不理解的是,当我ug倒时,控制者的行动火上,我的价值正确。 如果我对“@Model”作一个断点。 输入标语中的“强”部分显示我是我的@Model。 力量平等! 这是正确的。 然而,一旦我成功运作时,该数值就回到原来的价值。

我可以通过改变投入类型,以“Html”的形式提交和总结。 BeginForm()节,但我很想知道它是否和怎样这样做? 或者说是达到这一目的的唯一途径吗?

增 编

最佳回答

在 j中,确定投入价值的适当方式是:

$("#Str").val(@Model.Str);

接下来,我们看着控制者。 在<代码>POST的行动中,你将整个观点重新纳入日本宇宙航空研究开发机构的呼吁。 这意味着,所有超文本、文字参考资料和 Java本都在你的要求下退回。 由于你们都在努力更新的是“<代码>Str<>/code>”的输入值,因此我只希望把这一数值作为“JSON”和任何其它内容。

[HttpPost]
public ActionResult ChangeTheValue(MyModel model)
{
    var m = new MyModel();
    m.Str = model.Str;
    m.Str = m.Str + " Changed! ";
    m.Integer++;

    return Json(m.Str);

}

接下来,我将把你的超文本投入放在<代码>和>;form>上,这样你就可以把你的模型编成册,然后,你可以修改你的格文 post员额代码:

function changeButtonClicked() {
    var url =  @Url.Action("ChangeTheValue", "Test1") ;
    $.post(url, $( form ).serialize(), function (view) {
        $("#Str").val(view);
    });
}

所有序列化都把以你形式提供的投入整理成示,如果所有内容都适当命名为伙伴关系。 该网络将重新与你的模型挂钩。

如果您的路线既能满足非洲-日本宇宙航空研究开发机构的号召,又能充分请求您使用非洲-日本宇宙开发机构。 NET sIsAjaxRequest function to test the request and Return different results Depending on if the request is AJAX or not. 你在你的控制下将做这样的事情:

[HttpPost]
public ActionResult ChangeTheValue(MyModel model)
{
    var m = new MyModel();
    m.Str = model.Str;
    m.Str = m.Str + " Changed! ";
    m.Integer++;

    if (Request.IsAjaxRequest) {
        return Json(m.Str);
    }
    else {
        return View("Test1", m);
    }
}

在上面的“行动指示”栏中,你正在做你以前所做的一切,但现在正在测试申请类型,如果它使日本宇宙航空研究开发机构能够从你所珍贵的角度来看待一名JSON。 如果请求没有来自美国宇宙航空研究开发机构的呼吁,则将全文(超文本、文字等)放在浏览器上。

我希望,这是你们的帮助,也是你们所期待的。

问题回答

你可以更新这一看法,而不仅仅是模式。 该模型在服务器上汇编成一页,以便提出意见;在每台麻风机提出要求后,你需要重新编造raz页。

只有真正的选择是从服务器中回收json和人工更新OM/View。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签