在过去的几天里,我已经为我用MVC编写的web应用程序实现了Localization.有三个主要任务可以解决 Lozalization "问题",我可以指出:
有几种方法可以完成我已经探索过的每项任务,而我正在努力在它们之间进行选择.我有两个问题:
创建一个结构化XML文件,其中包含每个特定于每个文化特定值的每个键和childe节点的父节点,例如
<string key="myAppName">
<heIL>some Hebrew value</heIL>
<enUS>some English value</enUS>
</string>
Run Code Online (Sandbox Code Playgroud)这是有趣的,有时很复杂的地方.我在这里探讨了两个选项,我不知道如何继续.
<script>标记内添加服务器脚本渲染块从这一点开始,在java脚本中动态创建一个键数组或静态变量,并将所需的字符串放在其中.这是一个使用Razor引擎的例子.
<script type="text/javascript">
k_CultureInfo = "@CultureInfo.CurrentCulture.Name";
K_ApplicationName = "@MyStrings.SomeStringKey";
....
</script>
Run Code Online (Sandbox Code Playgroud)我在博客pos中找到了这个想法:在ASP.NET Here 中的JavaScript文件中本地化文本
language-agnostic asp.net asp.net-mvc design-patterns localization
Views文件夹中有一个.
应用程序的根目录中还有另一个.
我想注册一个自定义处理程序,我不知道代码应该去哪里.我在集成模式下运行IIS7所以我必须添加一个<handlers>标签,<system.webServer>但是当我在Views文件夹中查看web.config时,我看到它使用了<httpHandlers>under <system.web>标签.
所以有两个问题:1.为什么mvc应用程序中有两个web.config文件?2.我应该在何处以何种方式注册我的自定义HTTP处理程序?
我在我的ASP.NET MVC项目中使用git.
我想无论从文件debug,bin或config文件夹中的"待Chages"对话框中显示广告,因此我不会将它们提交到我的仓库.
这些文件是特定于机器的,特别是config文件夹.
我尝试将以下内容添加到.gitignore:
myproject\bin**
myproject\obj**
myproject\config\**
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为在每次构建或配置更改后,仍会显示所有三个文件夹下的所有文件.
我究竟做错了什么?
在使用Android Development Studio时,分析我的应用程序性能的最佳方法是什么?
我有一个ASP.NET MVC Web应用程序,需要允许公共API下载文件.这是动作代码:
public ActionResult DownloadFile(int id)
{
var item = _context.GetRepositoryFileByID(id);
if (item == null)
{
return HttpNotFound();
}
var filePath = Path.Combine(AppConfig.FilesRepositoryStorageRoot, item.IntrenalFilePath);
return File(filePath, "application/pdf");
}
Run Code Online (Sandbox Code Playgroud)
此方法是具有[Authorize(Roles = "Administrator,User")]设置属性的控制器, 因此仅登录用户可以访问此操作
现在,此操作应允许用户使用以下代码发出请求:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(fileDownloadUrl));
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
我在这里缺少的是如何将授权传递HttpWebRequest给DownloadFile动作.
我尝试过的每件事都会返回登录页面,因为应用程序无法授权用户并允许他访问该DownloadFile操作.
我试图使用以下代码将此Cookie值传递给请求该文件的网站
var authCookie = FormsAuthentication.GetAuthCookie(User.Identity.Name, true);
var authCoockieValue = authCookie.Value;
Run Code Online (Sandbox Code Playgroud)
然后网站使用了这个值:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(fileDownloadUrl));
request.Headers[HttpRequestHeader.Authorization] = "Bearer " + authorization;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
但是这没有用.我也尝试用"Basic"而不是"Bearer"标签传递标题,但它也是字段. …
c# asp.net-mvc forms-authentication httpwebrequest asp.net-mvc-4
我有以下代码:
PRINT N'Merging Wide Format Types...'
SET IDENTITY_INSERT WideFormatTypes ON
GO
MERGE INTO WideFormatTypes AS Target
USING (VALUES
(1, N'****', NULL),
(2, N'****', NULL),
(3, N'******', NULL),
(4, N'*******', NULL),
(5, N'******', NULL),
(6, N'*******', NULL)
)
AS Source (TypeID, TypeName, Description)
ON Target.TypeID = Source.TypeID
WHEN MATCHED THEN
UPDATE SET
TypeID = Source.TypeID,
TypeName = Source.TypeName,
Description = Source.Description
WHEN NOT MATCHED BY TARGET THEN
INSERT (TypeID, TypeName, Description)
VALUES (TypeID, TypeName, Description);
SET IDENTITY_INSERT WideFormatTypes OFF
GO
Run Code Online (Sandbox Code Playgroud)
它返回一个错误 …
我在以下代码中遇到了一些麻烦.
public ArrayList<? extends IEvent> getEventsByDateRange(DateTime minStartTime, DateTime minEndTime)
{
ArrayList<? extends IEvent> returnedEvents = new ArrayList<GoogleEvent>();
returnedEvents.add(new GoogleEvent());
return (returnedEvents);
}
Run Code Online (Sandbox Code Playgroud)
这将为"returnedEvents.add(new GoogleEvent());代码行"返回以下编译错误:
方法add(捕获#1-of?extends IEvent)在ArrayList类型中不适用于参数(GoogleEvent)
该课程的声明GoogleEvent如下:
public class GoogleEvent implements IEvent {...}
Run Code Online (Sandbox Code Playgroud)
我知道在Java中使用泛型有一些棘手的部分,因此是通配符,但我似乎无法弄清楚这一点.
谢谢.
我正在尝试创建一个编辑器模板,它将为传递的选择列表中的每个值创建一个"引导样式"单选按钮(就像Html.DropDownFor创建下拉列表的方法一样)
所以我在我看来有这个电话:
@Html.EditorFor(model => model.FaultTypeID,"RadioButtonList",
new SelectList(Model.AllowdeFaultTypes, "FaultTypeID", "FaultTypeName"))
Run Code Online (Sandbox Code Playgroud)
现在是RadioButtonList的模板:
@foreach (var item in ViewData["Items"] as SelectList)
{
<a>@item.Text</a> <b>@item.Value</b>
}
Run Code Online (Sandbox Code Playgroud)
但是转换失败了,我得到了一个NullReferanceExeption.通过反射,我看到ViewData["Items"]值是类型System.Collections.Generic.List<CamelotFaultManagement.DAL.FaultType>
问题是我真的不想将RadioButtonList编辑器模板与CamelotFaultManagement.DAL.FaultType类紧密结合,只是没有任何意义这样做.我想要一个通用的编辑器模板.
当我尝试使用如下MultiselectComperer值时,为什么会收到此消息:
[Display(ResourceType = typeof(OrdersManagementStrings), Name = "PrintSettings")]
[FilterAttribute(IsMultiselect = true, MultiselectComperer=FilterAttribute.eMultiselectComperer.Or)]
public ePrintSettings PrintSettings { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是自定义属性的代码...所有emuns都是公共的...但我收到此消息:
'MultiselectComperer'不是有效的命名属性参数,因为它不是有效的属性参数类型....
[AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
public sealed class FilterAttribute : Attribute
{
public enum eMultiselectComperer
{
Or,
And
}
public bool IsMultiselect { get; set; }
public eMultiselectComperer? MultiselectComperer { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 当我发出ajax请求时,我将一个"正在加载"的类附加到正文中,这样我就可以显示进度动画......出于某种原因,函数ae从未调用过,我看不到警报......
function setLoadingPanel()
{
var timer;
var body = $("body");
alert("Set AJAX HOOKS...");
$("body").on({
ajaxStart: function ()
{
alert("AJAX START");
//timer = setTimeout(function () { body.addClass("loading"); }, 50)
},
ajaxStop: function ()
{
alert("AJAX STOP!!!");
//$(this).removeClass("loading");
//clearTimeout(timer);
}
});
}
Run Code Online (Sandbox Code Playgroud)
我已经发出警报,试图查看钩子是否被调用,但由于某种原因没有弹出警报.
这是我使用简单的AJAX.ActionLink助手的ajax请求:
@{
var ajaxDialogoptions = new AjaxOptions()
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "DialogContainer",
OnComplete = "OpenDialog('DialogContainer');"
};
}
@Ajax.ActionLink(Model.AddNewItemButtonTitle, Model.AddActionName, Model.AddActionController, Model.AddActionRoutValues, ajaxDialogoptions, new { Class = "btn btn-primary anti-align-rtl" })
Run Code Online (Sandbox Code Playgroud)
这是我的捆绑脚本:
Bundle bundle = …Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×6
c# ×2
ajax ×1
android ×1
arraylist ×1
asp.net ×1
attributes ×1
generics ×1
git ×1
gitignore ×1
httphandler ×1
iis-7 ×1
java ×1
jquery ×1
localization ×1
sql ×1
sql-server ×1