小编ste*_*jnl的帖子

使URL语言特定(通过路线)

很难找到这个具体问题的答案,所以生病了:

我们希望建立完全语言特定的网址

www.mysite.com/EN

www.mysite.com/DE

这是在RouteConfig中完成的

url: "{language}/{controller}/{action}/{id}"
Run Code Online (Sandbox Code Playgroud)

但接下来是棘手的部分:

www.mysite.com/EN/Categories

www.mysite.com/DE/Kategorien

即使控制器名称以多种语言显示,但指向同一个控制器.这甚至可能吗?

globalization asp.net-mvc localization asp.net-mvc-routing

11
推荐指数
1
解决办法
1万
查看次数

如何存根HttpControllerContext

我试图对从WebAPI(OData)控制器调用的一段代码进行单元测试,并接受一个HttpControllerContext:

public string MethodToTest(HttpControllerContext context)
{
    string pub = string.Empty;

    if (context != null)
    {
        pub = context.Request.RequestUri.Segments[2].TrimEnd('/');
    }

    return pub;
}
Run Code Online (Sandbox Code Playgroud)

要对此进行单元测试,我需要一个HttpControllerContext对象.我该怎么办呢?我最初试图用Microsoft Fakes来存根,但HttpControllerContext似乎没有接口(为什么??),所以这似乎不是一个选项.我应该只是新建一个新的HttpControllerContext对象,并可能存根构造函数参数?或者使用Moq框架(而不是!)

c# stub asp.net-web-api microsoft-fakes

11
推荐指数
1
解决办法
7821
查看次数

WebAPI OData $格式为xml

对于我的WebAPI OData应用程序,我试图让我的客户端(浏览器)决定数据输出应该是什么格式.由于$ format尚未在WebAPI OData中实现,我在这里使用Raghuramn的示例:https://gist.github.com/raghuramn/5556691

var queryParams = request.GetQueryNameValuePairs();
var dollarFormat = queryParams.Where(kvp => kvp.Key == "$format").Select(kvp => kvp.Value).FirstOrDefault();

if (dollarFormat != null)
{
    request.Headers.Accept.Clear();
    request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse(dollarFormat));

    // remove $format from the request.
    request.Properties[HttpPropertyKeys.RequestQueryNameValuePairsKey] = queryParams.Where(kvp => kvp.Key != "$format");
}
Run Code Online (Sandbox Code Playgroud)

这适用于JSON($ format = application/json; odata = fullmetadata)和JSON light(format = application/json; odata = light),但到目前为止还不适用于xml.

如果我将$ format = application/XML添加到查询字符串,它仍然输出到json light.我如何强制XML输出?

编辑:

即使我通过发送 带有请求的Content-type:application/xmlAccept:application/xml 强制在Fiddler中 使用xml,响应只会列出:Content-Type:application/json; 的OData = minimalmetadata; 流= TRUE; 字符集= utf-8的 …

c# xml asp.net odata asp.net-web-api

6
推荐指数
1
解决办法
8044
查看次数

MVC4:嵌套的部分视图丢失模型数据

在MVC4项目中,我使用部分视图,即使用ViewModel并在其上具有GET Form。在Controller动作中,我希望ViewModel对象包含一些数据。当此部分放置在普通(.cshtml)视图上时,我通过Controller操作中的预期ViewModel对象接收了数据。但是,将此部分放置在另一个部分视图上时,由于某种原因,控制器操作中的ViewModel对象为空。当我逐步完成HttpGet表单的创建时,传入的模型不是空的,但是当调用GET控制器操作时,该模型为空。

有人知道原因吗?这是我不知道的某些MVC行为吗?谢谢!

部分:

@model ViewModel
    @if (Model != null)
    {
        using (Html.BeginForm("DoSomething", "Home", FormMethod.Get))
        { 
            @Html.HiddenFor(m => m.Object)            
            <input id="btnSend" type="submit"> 
        }
    }
Run Code Online (Sandbox Code Playgroud)

其他部分:

@using OtherViewModel.ViewModel
@Html.Partial("The Partial", Model.ViewModel, ViewData)
Run Code Online (Sandbox Code Playgroud)

风景:

@Html.Partial("_TheOtherPartial", Model.OtherViewModel, new ViewDataDictionary(ViewData) {
                TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "prefix" }
    })
Run Code Online (Sandbox Code Playgroud)

控制器

[HttpGet]
[AllowAnonymous]
public ActionResult DoSomething(ViewModel data)
{
}
Run Code Online (Sandbox Code Playgroud)

c# partial-views viewmodel asp.net-mvc-4

2
推荐指数
1
解决办法
5400
查看次数

实体框架:插入更新记录(而不是更新)

我正在使用以下代码来更新db中的某些记录:

        IList<Item> list;
        using (DbContext context = new DbContext()
        {
            list = Item.ToList();
            foreach (Item item in list)
            {
                // attach the item
                context.Item.Attach(item);

                item.Updated = DateTime.Now; 
                context.Items.Add(item);
                context.SaveChanges();
             }
        }
Run Code Online (Sandbox Code Playgroud)

问题是EF正在插入一个新项目,而不是更新更新的项目......我在网站上搜索了abit并看到了将项目附加到DbContext的建议,但那不起作用?我究竟做错了什么?

entity-framework updating dbcontext

1
推荐指数
1
解决办法
5685
查看次数

MVC/Rzor:文本框应该在回发后显示NO值

在MVC表单发布方案中,我希望在将数据发布到服务器之后有一个空文本框,并且该页面再次提供给用户.现在,发布的用户名显示在回发后的文本框中.

@using (Html.BeginForm("SignIn", "Account", FormMethod.Post))
{
    @Html.TextBoxFor(m => m.UserName, new { @class = "form-control", @type = "email", required = "", pattern = "^", @placeholder = "E-mail", @title = "", @id = "UserName", data_hint = "Required"})
}
Run Code Online (Sandbox Code Playgroud)

首先,包含用户名的模型被发送回表单,所以我认为这导致了它.我现在发回一个"干净"的模型,甚至强制空的用户名,但这也没有帮助.

return View("SignIn", "_Layout", new ViewModel
{
    UserName = ""
});
Run Code Online (Sandbox Code Playgroud)

如何在回发后获得空文本框?

c# asp.net asp.net-mvc razor asp.net-mvc-4

1
推荐指数
1
解决办法
2043
查看次数