小编Jef*_*ddy的帖子

MVC3显示模板

我已经创建了自定义编辑器模板和显示模板.我已将这些类型中的每一种放在我的views文件夹中的一个文件夹中.这些文件夹被命名为EditorTemplate或DisplayTemplate,具体取决于创建的模板类型.

所以,现在我可以使用EditorFor来使用我的自定义编辑器模板,或者使用DisplayFor作为我的自定义编辑器模板.

我想为LabelFor创建一个自定义模板,但我还没有找到这样的例子.我会在我的Views文件夹中创建一个名为Labeltemplate的文件夹并在此处添加吗?

UPDATE

我试图扩展LabelFor的原因是处理KeyValuePair类型的Property.我想使用此属性的Key作为Label,将值作为Display.我在这里问了一个关于DisplayFor来处理Value的问题.

我的解决方案最终成为>

   @Html.DisplayFor(m => m.MyProperty, @Model.MyProperty.Key)
Run Code Online (Sandbox Code Playgroud)

谢谢,

asp.net-mvc-3

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

仅获取实现接口的属性

我有一个实现接口的类.我只想检查实现我的接口的属性值.

所以,比方说我有这个界面:

public interface IFooBar {
    string foo { get; set; }
    string bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

而这堂课:

public class MyClass :IFooBar {
    public string foo { get; set; }
    public string bar { get; set; }
    public int MyOtherPropery1 { get; set; }
    public string MyOtherProperty2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

所以,我需要完成这个,没有神奇的字符串:

var myClassInstance = new MyClass();
foreach (var pi in myClassInstance.GetType().GetProperties()) {
    if(pi.Name == "MyOtherPropery1" || pi.Name == "MyOtherPropery2") {
        continue; //Not interested in these property …
Run Code Online (Sandbox Code Playgroud)

c# reflection

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

HTML5标记与自动调整大小的Div相对应

我希望有一个解决方案,但最糟糕的情况,解释为什么我的div没有调整大小,这可能是因为我使用的是nav标签.

我有以下HTML.当我的'section'标签内的内容增长时,div与页面内容类一样.但是,当我的导航菜单项增加时,div不会调整大小.

<div class="page-content">
    <nav>
      <ul>{menu items here}</ul>
    </nav>
    <section id="main">
        {bunch of text here}
    </section>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的CSS.

.page-content 
{
    display: block;
    position:relative;
    width: 100%;
   margin-left: auto;
    margin-right: auto;
    background-image: url(images/bg-home-main.jpg);
    background-repeat: no-repeat;
    background-position: center;

}

    nav {
    display: block;
    float: left;
    padding: 15px;
    position: relative;
    margin: 0px 0px 0px -45px;
}

#main {
    padding: 5px 25px 5px 25px;
    margin-left: 175px;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是div有一个背景图像应该覆盖导航和剖面区域的背景.但是,只有当我的剖面区域比我的导航区域更大(从上到下)时才会发生这种情况,因为div会拉伸以适应剖面大小.但是,如果我的导航区域较大,它实际上会扩展到div之外并在那里扩展图像.

css html5

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

无法在MVC3 HTML Helper中获取自定义属性值

我用一个需要来自模型属性的属性值的方法扩展了HTML帮助器.所以我已经定义了一个自定义属性.

    public class ChangeLogFieldAttribute : Attribute {
        public string FieldName { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

在我的模型中使用它就像这样.

    [Display(Name = "Style")]
    [ChangeLogField(FieldName = "styleid")]
    public string Style { get; set; }
Run Code Online (Sandbox Code Playgroud)

在我的帮助方法中,如果属性用于属性,我有以下代码来获取属性的FieldName值.

        var itemName = ((MemberExpression)ex.Body).Member.Name;

        var containerType = html.ViewData.ModelMetadata.ContainerType;
        var attribute = ((ChangeLogFieldAttribute[])containerType.GetProperty(html.ViewData.ModelMetadata.PropertyName).GetCustomAttributes(typeof(ChangeLogFieldAttribute), false)).FirstOrDefault();
        if (attribute != null) {
            itemName = attribute.FieldName;
        }
Run Code Online (Sandbox Code Playgroud)

但是,当我到达此代码时,我得到一个异常,因为containerType为null.

我不确定我是否正在做任何正确的事,但是我从大约4个不同的来源中取得了这一点.如果您可以建议解决我的问题或替代方案,我将不胜感激.

谢谢.

更新解决方案

我使用了Darin Dimitrov的解决方案,虽然我不得不调整它.这是我添加的内容.我必须检查属性metatdata的存在,一切都很好.

        var fieldName = ((MemberExpression)ex.Body).Member.Name;

        var metadata = ModelMetadata.FromLambdaExpression(ex, html.ViewData);
        if (metadata.AdditionalValues.ContainsKey("fieldName")) { 
            fieldName = (string)metadata.AdditionalValues["fieldName"];
        }
Run Code Online (Sandbox Code Playgroud)

custom-attributes data-annotations asp.net-mvc-3

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

在SQL Server中分配行号,但按值分组

我想从表中选择2列,并为每个值分配一个int值.但是,我希望第一列ID对于所有相同的值都相同.

对于第二列,我希望每个值都编号,但是按第一列分区.我已经想出了这篇文章,但我无法让第一部分工作.

这是我正在使用的测试场景.

DECLARE @TestTable as Table (Column1 char(1), Column2 char(1))

INSERT INTO @TestTable SELECT 'A','A' 
INSERT INTO @TestTable SELECT 'A','B' 
INSERT INTO @TestTable SELECT 'A','C' 
INSERT INTO @TestTable SELECT 'B','D' 
INSERT INTO @TestTable SELECT 'B','E' 
INSERT INTO @TestTable SELECT 'B','F' 
INSERT INTO @TestTable SELECT 'B','G' 
INSERT INTO @TestTable SELECT 'B','H' 
INSERT INTO @TestTable SELECT 'C','A' 
INSERT INTO @TestTable SELECT 'C','B' 
INSERT INTO @TestTable SELECT 'C','C' 


SELECT 
    Row_Number() OVER (Partition BY Column1 ORDER BY Column1) as Column1_ID,
    Column1,
    Row_Number() OVER …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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

将单个列连接到逗号分隔的列表中

我已经看到了人们将单个列卷入逗号分隔列表的多个示例,但我还需要更多.

以下是我需要的数据和结果的示例.

DECLARE @SalesPerson table (SalesPersonID int, SalesPersonName varchar(10))
DECLARE @Region table (RegionID int, RegionName varchar(15))
DECLARE @SalesPersonRegion table (SalesPersonID int, RegionID int)

INSERT INTO @SalesPerson (SalesPersonID, SalesPersonName) VALUES (1,'Jeff') 
INSERT INTO @SalesPerson (SalesPersonID, SalesPersonName) VALUES (2,'Pat') 
INSERT INTO @SalesPerson (SalesPersonID, SalesPersonName) VALUES (3,'Joe') 

INSERT INTO @Region (RegionID, RegionName) VALUES (1,'North') 
INSERT INTO @Region (RegionID, RegionName) VALUES (2,'South') 
INSERT INTO @Region (RegionID, RegionName) VALUES (3,'East') 
INSERT INTO @Region (RegionID, RegionName) VALUES (4,'West') 

INSERT INTO @SalesPersonRegion (SalesPersonID,RegionID) VALUES (1,1)
INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

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

javascript中"预期':'"错误的未知原因

我在我的网站中定义了以下功能.它适用于某些人,而不适用于其他人.该方法的最后一行发生异常,其中串联是.我相信,因为指定查询字符串的url的问号字符被视为三元运算符.

这里有什么东西我没有看到,或者有更好的方法来构建这个字符串?

url变量的值为:"mywebpage.aspx?AccountNumber = 123456"

function popUp(url) {
    var myleft = (screen.width) ? (screen.width - 750) / 2 : 100;
    var   mytop = (screen.height) ? (screen.height - 300) / 2 : 100;
    var id = new Date().getTime();

    eval("page" + id + " = window.open(" + url + ", '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=900,height=325, top='" + mytop + "',left='" + myleft +");");
}
Run Code Online (Sandbox Code Playgroud)

javascript

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

jquery不引人注目

我试图将unobtrusive.js包含在我的mvc3视图中,但是当我这样做时,我会在视图呈现时出现一堆错误.例外情况是在不引人注目的脚本中,它在任何地方检查任何与"未定义"相关的内容,就像这一行一样

if(message !== undefined) //Compare against undefined, because an empty message is legal
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

Microsoft JScript运行时错误:'undefined'为null或不是对象

这是我的视图的脚本声明.

<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.14.custom.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.11.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
<link href="@Url.Content("~/Content/themes/base/jquery.ui.autocomplete.css")" rel="stylesheet" type="text/css" /> 
Run Code Online (Sandbox Code Playgroud)

jquery unobtrusive-javascript

4
推荐指数
2
解决办法
9357
查看次数

MVC3强类型的局部视图模型绑定

我有一个强类型视图Edit,名为OrderModel的模型.在此视图中,我使用的是一个强类型的局部视图,其中包含一个名为OrderTypeModel的模型.部分视图_OrderTypeAutoComplete,包含jqueryui自动完成文本框.如果我使用此代码渲染视图,

public ActionResult Edit(){
    return View();
}
Run Code Online (Sandbox Code Playgroud)

我的编辑视图包含以下Razor标记

<div class="editor-field">
    @Html.Partial("_OrderTypeAutoComplete")
    @Html.HiddenFor(model => model.OrderTypeID)
    @Html.ValidationMessageFor(m => m.OrderTypeID)
</div>
Run Code Online (Sandbox Code Playgroud)

我的部分视图包含此剃刀标记

@{
    Layout = null;
}
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script>
@Html.AutoCompleteFor(model => model.OrderTypeID, x =>  x.OrderType, "Items","Orders")
Run Code Online (Sandbox Code Playgroud)

当我渲染这个时,一切都很棒,我的自动完成效果很好(使用自动完成扩展).无论如何,我需要在我的初始OrderModel中初始化一些东西,所以我将控制器中的代码更改为此.

public ActionResult Edit(){
    return View(OrderService.GetInitializedOrderModel()); //returns a new OrderModel
}
Run Code Online (Sandbox Code Playgroud)

现在当我渲染视图时,我得到了异常:传递到字典中的模型项的类型为'Testing.Models.OrderModel',但是这个字典需要一个类型为'Testing.Models.OrderTypeModel'的模型项.

在我的视图中的这一行@ Html.Partial("_ OrderTypeAutoComplete")

当我没有提供OrderModel时,似乎Razor引擎将为视图创建OrderModel,并为部分视图创建OrderTypeModel.这将得到相同的结果.

public ActionResult Edit(){
    return View(new OrderModel())
}
Run Code Online (Sandbox Code Playgroud)

我是MVC的新手,所以我不确定这里发生了什么.我只是想在OrderModel模型中为我的视图提供一些简单的下拉值,这些值足够小,我不需要jquery回发来获取.这就是我在我的模型中为Http Get on my Edit操作初始化的值.

任何帮助,将不胜感激.谢谢.

partial-views razor asp.net-mvc-3

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

MVC3 Razor Ajax.ActionLink不会使用POST方法

我有一个包含多个链接的页面.这些链接应该做一个ajax帖子和回调.但是,该链接正在执行Get而不是Post.这会导致404错误,因为我没有操作方法来处理请求的URL获取.

如果我从我的Action方法中删除HTTPPost属性,该链接可以正常工作,但是回调失败并且我返回的Json将在新页面中呈现.

这是我在视图中使用的代码.

<td id="action-@item.ItemID">@Ajax.ActionLink("Add", "AddToOrder", new { itemID = item.ItemID }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "actionCompleted" }, new { id = "add-" + item.ItemID })</td>
Run Code Online (Sandbox Code Playgroud)

这最终会添加此HTML:

 <td id="action-012679"><a data-ajax="true" data-ajax-method="POST" data-ajax-success="actionCompleted" href="/mysite/neworder/AddToOrder?itemID=012679" id="add-012679">Add to Order</a></td>
Run Code Online (Sandbox Code Playgroud)

我的控制器具有以下操作方法.

[HttpPost]
public JsonResult AddToOrder(string itemID) {
    return Json(new { id = itemID, Action = "Added", "Just getting this working"});
}
Run Code Online (Sandbox Code Playgroud)

我在Success上调用的回调方法如下所示:

<script language="javascript" type="text/javascript">        
    function actionCompleted(response, status, data) {
        alert("We have returned");
    }

</script>
Run Code Online (Sandbox Code Playgroud)

如果我将操作方法​​的[HTTPPost]属性更改为[HTTPGet],则会出现Json错误.我可以通过将JsonRequestBehavior.AllowGet添加到我的返回值来解决这个问题,但是这不会使用页面上定义的回调函数而失败.

任何帮助,将不胜感激.

jquery razor asp.net-mvc-3

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