GVKun编程网logo

asp.net-mvc – 如何在我的视图中将HTML从MVC控制器返回到div(controller返回html)

18

此处将为大家介绍关于asp.net-mvc–如何在我的视图中将HTML从MVC控制器返回到div的详细内容,并且为您解答有关controller返回html的相关问题,此外,我们还将为您介绍关于asp

此处将为大家介绍关于asp.net-mvc – 如何在我的视图中将HTML从MVC控制器返回到div的详细内容,并且为您解答有关controller返回html的相关问题,此外,我们还将为您介绍关于asp.net – 从MVC控制器返回不同的视图、asp.net-mvc – $.ajax发布到MVC控制器返回内部服务器错误:参数字典包含空条目、asp.net-mvc – ASP MVC:为什么我的视图中看不到我的内部类?、asp.net-mvc – ASP.Net MVC 4.在单独的程序集中路由控制器返回错误404的有用信息。

本文目录一览:

asp.net-mvc – 如何在我的视图中将HTML从MVC控制器返回到div(controller返回html)

asp.net-mvc – 如何在我的视图中将HTML从MVC控制器返回到div(controller返回html)

我正在尝试将生成的 HTML字符串返回到视图,以动态生成带有结果的HTML表.我无法获得返回的HTML字符串任何建议和帮助非常感谢.

这是我的控制器代码

public ActionResult ValidateTrams()
    {
        string html = "";
        if (Request.Files.Count == 0 || Request.Files[0].ContentLength == 0)
        {
        }

        else
        {
            html = ProcesstextFile(Request.Files[0].InputStream);
        }

        return View(html);
    }

我试图像这样在jquery中获取这个返回的结果

$('#tramsView').live('click',function () {

$.ajax({
    url: '/Booking/ValidateTrams',type: 'POST',dataType: 'jsonp',success: function (data) {
        alert(data);
        $('#TramsViewFrame').html(data);
    },error: function (jqxhr,textStatus,errorThrown) {
        $(window).hideWaitScreen();
        if (confirm(errorThrown)) { window.location.reload(); }
    }
});

});

最后,下面是表单的CSHTML.在这里,我正在从提示按钮类型的表单中读取文件

<form action="#" method="post" enctype="multipart/form-data"name="form"
            id="frmvalidate">
            <table>
                <tr>
                    <td>
                        <input type='file' name='trams' id='ValidatetramsFile' />
                    </td>
                </tr>
                <tr>
                    <td>
                        <br />
                        <input name="cbdisplayUmatched" id="cbdisplayUmatched" type="checkBox" value="" checked="true" />
                        <labelhttps://www.jb51.cc/tag/decoration/" target="_blank">decoration: none; outline: none; font-size: 1.1em; padding: 3px 0 0px 0;">
                            display rows that were <strong>NOT</strong> parsed</label>
                    </td>
                </tr>
                <tr>
                    <td>
                        <br />
                        <div>
                            <button type="submit" value="VIEW"id="tramsView">VIEW</button>
                        </div>
                    </td>
                </tr>
            </table>
            </form>

感谢您的时间,非常感谢您的帮助.亲切的问候!!!

解决方法

听起来好像你的表单仍在提交正常的回发,所以你正在做的任何异步调用都会丢失.

尝试阻止使用以下内容进行默认表单提交:

$('#tramsView').live('click',function (evt) {

    evt.preventDefault();

    // ... rest of your code 

});

顺便提一下,在这种情况下,如果你正在做的只是更新#TramsViewFrame上的html,你可以使用稍微简单的$.load()方法:

$('#tramsView').live('click',function (evt) {
    evt.preventDefault();
    $('#TramsViewFrame').load('/Booking/ValidateTrams');
});

asp.net – 从MVC控制器返回不同的视图

asp.net – 从MVC控制器返回不同的视图

我有一个MVC应用程序,其SharedLayout视图(母版页)为用户提供搜索功能.他们可以通过订单号或按号码搜索他们的订单.因此共享视图和文本框有两个选项按钮.代码有点像这样

@using (Html.BeginForm("Track","Tracking",FormMethod.Post))
        {
            <div>
                <textarea cols="20" id="txtNo" name="txtOrderNo" rows="2" ></textarea>
            </div>
            <div>
                <input type="radio" name="optOrderNo" checked="checked" value="tracking" />Order No                    <input type="radio" name="optRefNo" value="tracking" />Ref No
            </div>
            <div>
                <input type="submit" value="Track" />
            </div>
        }

所以它将转到TrackingController和Track Method并返回视图.它适用于单个搜索,因为View与控制器的方法相关联.它工作正常但我怎么能有条件地返回基于单选按钮选择的其他视图.

我想出的就是这个

[HttpPost]
    public ActionResult Track(FormCollection form)
    {
        string refNo = null;
        if (form["optRefNo"] == null)
        {
            string OrderNo = form["txtOrderNo"];
            var manager = new TrackingManager();
            var a = manager.ConsignmentTracking(OrderNo);
            var model = new TrackingModel();
            if (OrderNo != null)
                model.SetModelForConsNo(a,consNo);
            return View(model);
        }

        refNo = form["txtConsNo"];
        return TrackByRef(refNo);
    }

    public ActionResult TrackByRef(string refNo)
    {
       //what ever i want to do with reference no
        return View();
    }

请指导.
谢谢

解决方法

View有一个重载,第一个参数是一个字符串.这是您要使用的视图的名称(或路径),而不是默认值(这是与操作名称匹配的视图).

public ActionResult TrackByRef(string refNo)
{
   //what ever i want to do with reference no
    return View("Track");
   // or,if you want to supply a model to Track:
   // return View("Track",myModel);
}

asp.net-mvc – $.ajax发布到MVC控制器返回内部服务器错误:参数字典包含空条目

asp.net-mvc – $.ajax发布到MVC控制器返回内部服务器错误:参数字典包含空条目

参数字典包含非可空类型’system.int32’的参数’appId’的空条目,用于’HLIT_TicketingMVC.Controllers.TicketController’中的方法’System.Web.Mvc.ContentResult CheckForInstaller(Int32)’.可选参数必须是引用类型,可空类型,或者声明为可选参数.

function SubmitAjax(url,message,successFunc,errorFunc) {
  $.ajax({
    type:'POST',url:url,data:message,contentType: 'application/json; charset=utf-8',dataType: 'json',success:successFunc,error:errorFunc
  });
};

数据对象构建如下:

var message={"appId":application.val()};

我也尝试了一个jsonified字符串:

var message="{'appId':"+application.val()+"}";

var message="{'appId':'"+application.val()+"'}";

我在尝试发布之前验证了消息是否带有正确的int值.鼠标在调试器上最近显示:{appId =“6”}

控制器上的方法签名是:

public ContentResult CheckForInstaller(int appId)

当我从方法签名中删除参数时,它确实触及了内部的断点,所以它是需要某种属性的签名,或者我认为消息没有正确构建.

最佳答案
删除这个:

contentType: 'application/json; charset=utf-8',

MVC不会将JSON解析为int.您需要application / x-www-form-urlencoded的默认值.

asp.net-mvc – ASP MVC:为什么我的视图中看不到我的内部类?

asp.net-mvc – ASP MVC:为什么我的视图中看不到我的内部类?

<ul>
    <li><% Html.ActionLink(StringHelper.TryGetLocalString("Something"),"Blah","Blah"); %></li>
</ul>

在我从局部视图中看到它之前,我必须将StringHelper类设置为public.

为什么??

(旁注:解析为本地字符串将在我的控制器中完成而不是在视图(布局)中,但它是一个很好的快速示例).

卢克,谢谢你的帮助

解决方法

由于StringHelper很可能不会与MVC站点的其余代码编译到同一个DLL中,因此它无法访问内部事物.

当你有控制器,视图等作为默认MVC网站设置(以及它在调试时如何工作)将常规代码编译为DLL,然后单独编译页面/视图时,就会出现这种情况.当您在发布网站时设置“Updatability”时,也会发生这种情况.

asp.net-mvc – ASP.Net MVC 4.在单独的程序集中路由控制器返回错误404

asp.net-mvc – ASP.Net MVC 4.在单独的程序集中路由控制器返回错误404

我正在尝试执行看似简单的任务 – 从我的项目中的单独程序集调用控制器.

然而,当我从该控制器请求信息时,我得到错误404.我一直在与它斗争最后5-6小时,我怀疑我可能会遗漏一些小而明显的东西,这就是为什么我希望得到一个建议.

我在stakoverflow上找到了关于路由和错误404的类似问题,但是当我实现另一个原型项目时,我没有得到这样的错误并使用类似的代码结构,我相信他们描述的问题与我的不同.

总的来说 – 我想要实现的目标的总体目标是在独立项目中实现一个区域,如here所述.
我做了所有类似的事情,在链接中解释了一个小型原型(并且它工作正常),现在尝试申请真正的项目.

这是我包含程序集和管理路由的方式:

>有一个主要项目,其中一个区域代表一个隐藏的子项目“CommunicationBus”
>“CommunicationBus”项目包含一个类“CommunicationBusAreaRegistration”.注册路由工作正常,我可以使用调试器到这里,当我使用routedebugger时我也可以看到这条路线(见下面的截图).我也玩过这个类的命名空间,最后尝试添加.Areas.CommunicationBus,但它没有任何区别我能注意到.

namespace MBVD.MainProject.UI
{
    public class CommunicationBusAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "CommunicationBus";
            }
        }

        public override void Registerarea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "CommunicationBus_default","CommunicationBus/{controller}/{action}/{id}",new { action = "Index",id = UrlParameter.Optional },new string[] { "CommunicationBus.Controllers" }
            );
        }
    }
}

>在主项目的Global.asax中,我按以下方式注册路由:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default",// Route name
        "{controller}/{action}/{id}",new { controller = "Home",action = "Index",new[] { "MBVD.MainProject.UI.Controllers" } 
    );
}

如果我在这里引用“CommunicationBus.Controllers”,我就不能再打开主应用程序的页面了.但是,我相信我只需要在这里注册主应用程序的控制器的路径
> CommunicationBus项目的输出路径设置为主项目的bin文件夹.每次我构建CommunicationBus时,我都会在主项目中获得一个新的.dll.
>我在CommunicationBus项目中添加了一个简单的控制器:

namespace CommunicationBus.Controllers
{
    public class TestController : Controller
    {
        [HttpGet]
        public string Index()
        {
            return "It works!";
        }
    }
}

>我添加了一个主项目的链接

@Html.ActionLink("test","Index","Test",new {Area="CommunicationBus"},null)

这是:

本地主机:63254 / CommunicationBus /测试
>我使用routedebugger,它没有显示任何可疑的东西:

我将ASP.NET MVC 4用于这两个项目.

我会很感激我能做些什么来弄清楚为什么我会收到这个错误.

解决方法

我相信您因为路由顺序而收到此错误.由于/ CommunicationBus / Test与/ {controller} / {action} / {id}和/ CommunicationBus / {controller} / {action} / {id}匹配第一个注册路由(/ {controller} / {action} / {id })优先于所需的路由,MVC无法在名为CommunicationBus的默认命名空间(MBVD.MainProject.UI.Controllers)中找到控制器.

尝试在默认路由之前注册您的区域路由.或者,您可以一起跳过该业务并使用属性路由(http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx).如果使用属性路由,则需要确保在调用routes之前从所有命名空间加载控制器.MapMvcAttributeRoutes(); (如果您只是作为参考包含,这没有问题,如果您动态加载引用,它只会成为一个问题).

关于asp.net-mvc – 如何在我的视图中将HTML从MVC控制器返回到divcontroller返回html的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于asp.net – 从MVC控制器返回不同的视图、asp.net-mvc – $.ajax发布到MVC控制器返回内部服务器错误:参数字典包含空条目、asp.net-mvc – ASP MVC:为什么我的视图中看不到我的内部类?、asp.net-mvc – ASP.Net MVC 4.在单独的程序集中路由控制器返回错误404等相关知识的信息别忘了在本站进行查找喔。

本文标签: