标签: t4mvc

在JS函数中使用T4MVC

请使用以下脚本.注意字符串'/ Home/Index'.使用T4MVC,有没有办法指定这个摆脱魔法字符串?

<script type="text/javascript">
    $(document).ready(function () {
        $dialog = $('#dialog');
        $dialog.dialog({
            autoOpen: false,
            buttons: { },
            open: function(event, ui) {
                $(this).load("/Home/Index");
           }
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc t4 t4mvc asp.net-mvc-3

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

T4MVC SEO的链接

我正在尝试将我们的链接切换到T4MVC,并且我的参数不是动作签名的一个小问题.我们有一条类似这样的路线:

http://www.mydomain.com/{fooKey}/{barKey}/{barID}

==>导致BarController.Details(barID).

fooKey和barKey仅添加到链接以用于SEO目的.(因为bar是foo的子实体,我们想在URL中表示该层次结构)

到目前为止,我们会使用

<% =Html.ActionLink(bar.Name, "Details", "Bar", new {barID = bar.ID, fooKey = bar.Foo.Key, barKey = bar.Key}, null)%>
Run Code Online (Sandbox Code Playgroud)

这将导致我们使用BarController.Details(barID),同时在URL中保留fooKey和barKey.

现在我们开始使用T4MVC,我们尝试将其更改为

<% =Html.ActionLink(bar.Name, MVC.Bar.Details(bar.ID), null)%>
Run Code Online (Sandbox Code Playgroud)

由于barKey和fooKey不是Details操作签名的一部分,因此URL中不再显示它们.

有没有办法绕过这个而不必将这些参数添加到动作签名中?

asp.net-mvc seo t4mvc

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

T4MVC - 处理可选参数

我正在使用.NET 3.5,MVC 2和T4MVC 2.6.42 ......

我有以下行动:

public virtual ActionResult Index(string id, int page = 1)
Run Code Online (Sandbox Code Playgroud)

以下路线:

routes.MapRoute(
    "Products", // Route name
    "Products/{id}", // URL with parameters
    new { controller = "Products", action = "Index", id = UrlParameter.Optional, page = UrlParameter.Optional }, // Parameter defaults
    new string[] { "Web.Controllers" }
);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试调用时,MVC.Products.Index("anything")我得到一个"没有重载方法'索引'需要'1'参数"异常.MVC.Products.Index()然而,呼叫是有效的.

我不应该省略"page"参数,因为它默认为'1'?

注意:我已尝试将路由中的页面参数默认为1,但无法正常工作.

注2:还尝试了[可选]属性但没有成功.

c# asp.net-mvc t4mvc

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

T4MVC没有为一个控制器生成一些操作

我有一种情况,T4MVC正在生成所有内容(意味着intellisense显示所有区域/控制器/操作和所有编译),但是当我运行代码时,我收到T4MVC was called incorrectly运行时错误.

我已经调查了生成的文件并发现对于我的项目中的一个控制器,只有基类中的操作才会生成重写的存根操作.对于其他控制器,正在生成所有操作.它们都具有相同的设置,如下所述.

我有一个BaseController类有一些共享代码(并继承自Controller).在Controllers目录(项目的根目录)中,我有许多控制器,所有控制器都继承自BaseController.

然后我有几个区域.在每个区域中,我有相同的控制器,每个控制器都从根Controllers目录中的同名控制器继承.

运行T4MVC(版本2.6.54),一切正常,除了一个控制器.奇怪的是,intellisense适用于控制器,但在引用实际操作时(在ActionLink()调用中)会产生阻塞.

我手动将一个操作添加到生成的代码中,没有错误.

所以我的问题是,什么会导致T4MVC 为控制器生成所有代码?缺少的行为都是public virtual ActionResult,行动本身也很好.问题控制器在所有区域都有相同的问题.

一些缩写代码.

/Controllers/BaseController.cs

namespace MyProject.Controllers
{
    public abstract partial class BaseController : Controller
    {
        protected ISession session;

        public BaseController()
        {
        }

        // other shared methods/actions
    }
}
Run Code Online (Sandbox Code Playgroud)

/Controllers/ActivitiesController.cs(这是问题控制器)

namespace MyProject.Controllers
{
    public partial class ActivitiesController : BaseController
    {
        // for resolving concurrency exceptions
        private Activity userValues;
        private Activity databaseValues;

        public ActivitiesController() …
Run Code Online (Sandbox Code Playgroud)

t4mvc

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

T4MVC生成的文件和不同的位置

是否有一个设置,我可以指向我的T4MVC生成的文件.它们都在我网站的根目录中.

t4mvc

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

jquery/view中的T4MVC url.action

这可能是也可能是不可能的(并且很可能在文档中,但我只是错过了它).

如何在我的视图中使用T4MVC构建Url.Action(),这将允许我使用jQuery选择器.我一直在尝试以下(在我的javascript中)没有成功:

function cancelHoldBooking() {
    var url = '<%= Url.Action(MVC.FundProperty.CancelLock($("#propertyid").val())) %>';
    // other code omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)

我能够成功地做到以下几点:

function cancelHoldBooking() {
    var url = '<%= Url.Action("CancelLock", "FundProperty") %>';
    url += "?id=" + $("#propertyid").val();
    // other code omitted for brevity - in this case   
    // **I could of course have used the**:
    // var params = {id: $('#propertyid').val()};
    // **object**
}
Run Code Online (Sandbox Code Playgroud)

我知道当答案到来时,这将是一个'doh'时刻,但对于我的生活,我无法弄清楚这一点!

干杯...

[编辑] - 我想补充一点,如果我省略MVC.FundProperty.CancelLock()id参数并试图通过$ ajax调用发送params对象,那么编译器会抱怨调用中缺少的参数.因此,我不能通过在CancelLock()调用中调用$ ajax params对象而没有参数来绕过javascript mish-mash.令人沮丧的:(

asp.net-mvc t4mvc

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

T4MVC - 如何重新生成?

我已经通过NuGet 安装了T4MVC.

在安装时,它为项目当时生成了项目的帮助程序类.但是,只要将新项添加到项目中,这些生成的帮助程序类就不会更新.

有几个人遇到了这个问题,答案似乎总是"右键单击T4MVC.tt文件并选择运行自定义工具 "(参见此处的示例).但是,当我右键单击T4MVC.tt文件时,没有运行自定义工具选项 - 实际上,在文件的属性中没有声明自定义工具.

此外,T4MVC.tt是项目中的隐藏文件,因此我希望在此文件上执行此操作似乎很奇怪.

那么有人可以解释如何让T4MVC更新MVC4项目中生成的类吗?

t4mvc asp.net-mvc-4

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

使用T4MVC在RedirectToAction()中传递对象

可能重复:
将数据从Action传递给另一个Action

我有一个视图,我提交一个表单,并根据我想重定向到一个动作的结果.对应于和动作的视图是强类型的,它应该接受ResultsViewModel.

我正在尝试使用T4MVC传递ResultsViewModel.

以下是代码:

    [HttpPost]
    public virtual ActionResult AddEntity(string viewModel)
    {
        //Deserialize using Json.NET
        var entity = JsonConvert.DeserializeObject<MyEntity>(viewModel);

        var success = DoSomething(); //returns boolean
        if(success)
        {
            var result = new ResultsViewModel { MyEntity = entity, MessageId = 1};
            return RedirectToAction(MVC.MyController.ResultsPage(result));
        }

        var result = new ResultsViewModel { MyEntity = entity, MessageId = 2};
        return RedirectToAction(MVC.MyController.ResultsPage(result));
    }

    public virtual ActionResult ResultsPage(ResultsViewModel viewModel)
    {
        return View(viewModel);
    }
Run Code Online (Sandbox Code Playgroud)

当代码到达时

    public virtual ActionResult ResultsPage(ResultsViewModel viewModel)
    {
        return View(viewModel);
    }
Run Code Online (Sandbox Code Playgroud)

viewModel始终等于null.

我知道我可以这样做:

return RedirectToAction("ResultsPage", …
Run Code Online (Sandbox Code Playgroud)

c# t4mvc asp.net-mvc-3

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

ActionLink 使用 T4MVC 和一个 HTML 代码块

有没有办法让这个工作:

@foreach (var item in Model.CategoryListByKeywordsDetails)
{
    <li>
        @Html.ActionLink("ver >", MVC.Ad.ListByCategory(item.Id, (string)ViewBag.keywords))
        {
            <em>@Html.DisplayFor(modelItem => item.SearchCount)</em> @Html.DisplayFor(modelItem => item.Name) <span class="float-right">ver ></span>
        }
    </li>
}        
Run Code Online (Sandbox Code Playgroud)

我想要结果(我放了空格来显示 HTML 代码):

<a href="/Ad/ListByCategory?categoryId=1&keywords=alfa">
    <em>6</em>Carros
    <span class="float-right">ver &gt;</span>
</a>
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc t4mvc razor

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

标签 统计

t4mvc ×9

asp.net-mvc ×5

asp.net-mvc-3 ×2

c# ×2

asp.net-mvc-4 ×1

razor ×1

seo ×1

t4 ×1