是否可以将ModelExpression传递给TagHelper?

时间:2017-11-05 18:20:31

标签: c# razor asp.net-core asp.net-core-tag-helpers

我们可以在TagHelper中使用此属性获取ModelExpression

[HtmlAttributeName("asp-for")]
public ModelExpression For { get; set; }

我以某种方式设法*让ViewModel具有ModelExpression属性:

public class TemplateViewModel
{
    public ModelExpression For { get; set; }
}

每当我尝试传递它时,模型表达式都是来自For的{​​{1}},而不是存储在TemplateViewModel中的真实表达式:

For

以上结果:

@model TemplateViewModel
<input asp-for="@Model.For" class="form-control"/>

我预料到输入,由<input class="form-control" type="text" id="For" name="For" value="Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression" /> 描述,而不是文字ModelExpressionModelExpression

*因为我想使用ModelExpression获得TagHelper的模板视图。这个例子很重要。我的主要动机是创建一个IHtmlHelper::PartialView() TagHelper,它生成一个Bootstrap Form Group

1 个答案:

答案 0 :(得分:0)

ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 90, bytes); File destination = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".jpg"); FileOutputStream fo; try { destination.createNewFile(); fo = new FileOutputStream(destination); fo.write(bytes.toByteArray()); fo.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } String path = destination.getPath(); Uri bmpUri = Uri.parse("file://" + destination.getAbsolutePath()); //Uri bmpUri = Uri.parse(path); String body = "…Check it out for yourself !"; TweetComposer.Builder builder = new TweetComposer.Builder(this) .text(body) .image(bmpUri); builder.show(); 作为Razor Compiler中的特例处理,因此无法直接使用。由于编译器是开源的,因此您可以建议使用补丁来忽略属性本身为ModelExpression的情况。与此同时,您需要在代码帮助程序中使用不同类型的属性,以帮助您获得对实际ModelExpression的引用。也许是ModelExpression