Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP-MVC:如何使用自定义html帮助程序从控制器获取对象属性并将其传递到视图中?_Asp.net Mvc - Fatal编程技术网

Asp.net mvc ASP-MVC:如何使用自定义html帮助程序从控制器获取对象属性并将其传递到视图中?

Asp.net mvc ASP-MVC:如何使用自定义html帮助程序从控制器获取对象属性并将其传递到视图中?,asp.net-mvc,Asp.net Mvc,我正在努力找出如何从控制器获取对象属性,比如说,我想获取视图中显示的对象的ID,以便在我制作的自定义HTML帮助程序中使用。然后,如何使用此ID作为视图中隐藏html标记的值 以下是html帮助程序: public static IHtmlString AddLink<TModel>(this HtmlHelper<TModel> htmlHelper, string linkText, string containerElement, string counterEle

我正在努力找出如何从控制器获取对象属性,比如说,我想获取视图中显示的对象的ID,以便在我制作的自定义HTML帮助程序中使用。然后,如何使用此ID作为视图中隐藏html标记的值

以下是html帮助程序:

public static IHtmlString AddLink<TModel>(this HtmlHelper<TModel> htmlHelper, string linkText, string containerElement, string counterElement, string collectionProperty, Type nestedType)
        {
            var ticks = DateTime.UtcNow.Ticks;
            var nestedObject = Activator.CreateInstance(nestedType);
            var partial = htmlHelper.EditorFor(x => nestedObject).ToHtmlString().JsEncode();
            partial = partial.Replace("id=\\\"nestedObject", "id=\\\"" + collectionProperty + "_" + ticks + "_");
            partial = partial.Replace("name=\\\"nestedObject", "name=\\\"" + collectionProperty + "[" + ticks + "]");
            var js = string.Format("javascript:addNestedForm('{0}','{1}','{2}','{3}');return false;", containerElement, counterElement, ticks, partial);
            TagBuilder tb = new TagBuilder("a");
            tb.Attributes.Add("href", "#");
            tb.Attributes.Add("onclick", js);
            tb.InnerHtml = linkText;
            var tag = tb.ToString(TagRenderMode.Normal);
            return MvcHtmlString.Create(tag);
        }
对于视图,我使用html助手函数的地方如下:

<p>
    @Html.AddLink("Add More Part", "#parts", ".part", "Parts", typeof(percobaan2.Models.Part))
</p>

提前感谢。

在助手扩展方法中添加一个额外的参数字符串objectId,并将模型id传递给该方法怎么样

public static IHtmlString AddLink<TModel>(this HtmlHelper<TModel> htmlHelper
, string linkText, string containerElement, string counterElement, 
string collectionProperty, Type nestedType, 
string objectId)
{

}

哇,让我试试吧,等一下,我还在修复一些代码,所以我不能马上测试,但我有一个问题。我们可能已经传递了参数。隐马尔可夫模型。。我们需要将参数指定给我们想要的html标记的值吗,还是就这样?它会自动将字符串objectId检测为html标记?nooo的值。你必须编写你想要的代码。我们只为此付费:@acesupriatana,您需要像tb.Attributes.Addid、objectId这样编码;哦,我明白了:D对不起,我正在学习这个html帮助程序,所以我在这里做婴儿步。顺便说一句,这不是应该像tb.Attributes.Addvalue,objectId?因为我想分配给html标记值?对不起,如果我错了:S
public static IHtmlString AddLink<TModel>(this HtmlHelper<TModel> htmlHelper
, string linkText, string containerElement, string counterElement, 
string collectionProperty, Type nestedType, 
string objectId)
{

}
@Html.AddLink("Add More Part", "#parts", ".part", "Parts",
typeof(percobaan2.Models.Part), 
Convert.ToString(percobaan2.Models.Part.Id))