首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ajax请求回发一个新页面,而不是部分加载

Ajax请求回发一个新页面,而不是部分加载
EN

Stack Overflow用户
提问于 2014-01-24 21:20:09
回答 1查看 735关注 0票数 0

我的视图中有这个HTML代码

代码语言:javascript
运行
复制
@using (Ajax.BeginForm("AddJoke", "Home", new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "MyfriendsJokes" , InsertionMode= InsertionMode.InsertAfter}))
{ 
    <div style="display:block">
        <textarea placeholder="Post New Joke" id="newJoke" name="joke" rows="3" cols="50" style="float:left;position"></textarea>
        <button type="submit" id="postnewjoke" style="float:left"> Post </button>

        @Html.TextBoxFor(model => model.fileContent, new { type = "file", id = "fileuploaded", name = "fileuploaded" })
        <div style="display:inline-block">
            <input type="checkbox" name="geo" id="geo" style="width: 100%; float: left; display: block">
            <input name="longitude" style="display:none"/>
            <input name="latitude" style="display:none" />
            <input name="user" style="display:none" value="@Model.user.Id"/>
            <span>Include Location</span>
        </div>
        <span id="jokeError" style="color:red;font-size:14px;"></span>
    </div>
}


<article id="MyfriendsJokes">
    @Html.Partial("_NewJoke")
</article>

这个代码在我的控制器里

代码语言:javascript
运行
复制
       [HttpPost]
    public PartialViewResult AddJoke(string joke, string user, HomePage page,HttpPostedFileBase fileuploaded, string longitude, string latitude)
    {

        Joke newJ = new Joke();
        newJ.Key = Guid.NewGuid();
        newJ.body = joke;
        newJ.facebookID = user;
        newJ.rank = 0;
        newJ.time = DateTime.Now;
        newJ.longitude = longitude;
        newJ.latitude = latitude;
        db.Jokes.Add(newJ);
        HomePage page1 = new HomePage();
        page1.user = Session["user"] as MyAppUser;
        //db.SaveChanges();
        return PartialView("_NewJoke", page1);
    }

但是,它没有将元素添加到目标div中,而是用一个新的整页重新加载页面,其中只包含了部分视图的元素,即

代码语言:javascript
运行
复制
@using Jokes.Models
@using Microsoft.AspNet.Mvc.Facebook.Models
@model HomePage

<div style="display:block">
    @Model.user.Name
</div>

有人能帮我说一下,在这里添加元素到div而不是加载一个新的页面有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-24 21:33:15

确保在页面中引用了jquery.unobtrusive-ajax.js脚本。这就是AJAXifies所有由Ajax.*助手生成的输出。如果没有这个脚本,您只会得到一个由<form>生成的标准Ajax.BeginForm元素,其中包含一组data-*属性。jquery.unobtrusive-ajax.js脚本分析这些data-*属性并订阅表单的submit事件,取消进行完全回发的默认操作,并根据数据-*属性向服务器发送AJAX请求。

值得一提的是,这个脚本必须包含在之后,因为它依赖于 jquery.js。

而且,您的表单中似乎有一些文件输入,并且您的控制器操作正在接受一个HttpPostedFileBase参数。您应该意识到,您不能使用AJAX请求上传文件,一旦包含此脚本,您的文件上传就会停止工作。为了能够使用AJAX上传文件,您可以使用jquery.formBlueimp文件上传等插件,也可以直接使用现代浏览器中内置的新XMLHttpRequest对象。这些插件的优点是,它们可以进行特性检测,并将根据客户端浏览器的功能而退回到其他技术。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21342661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档